node.js - 在 Express.js 中 res.send() 后退出

标签 node.js express

我有一个相当简单的 Express.js 应用程序,它带有一个登录组件,如果登录失败,我想提前退出。我看到应用程序没有这样做的迹象,并且我还没有找到明确的答案来表明调用 res.send() 是否会停止任何进一步的处理。这是我现在的代码:

client.login( username, password, function( auth, client ) {
  if( !auth ) {
    res.send( 401 );
  }

  // DO OTHER STUFF IF AUTH IS SUCCESSFUL
}

如果我正确阅读了源代码,它应该结束请求(中止进一步处理),但我是 node 新手,所以我还没有准备好相信我认为我认为的东西正在看书。归根结底,我想我主要是从更可靠的来源中寻找明确的答案,而不是我自己对不熟悉的源代码的解释。如果 send() 没有中止处理,那么正确的方法是什么?

最佳答案

当然 express 不能神奇地让你的 javascript 函数从其他地方停止执行。

我不喜欢 next([error]) 解决方案,因为我认为错误应该只用于您通常不期望的情况(例如无法访问的数据库或其他情况)。在这种情况下,一个简单的错误密码就会导致错误。对普通控制流不使用异常/错误是一种常见的约定。

因此,我建议在 res.send 调用之后放置一个 return 语句,以使您的函数停止进一步执行。

client.login( username, password, function( auth, client ) {
  if( !auth ) {
    res.send( 401 );
    return;
  }

  // DO OTHER STUFF REALLY ONLY IF AUTH IS SUCCESSFUL
}

关于node.js - 在 Express.js 中 res.send() 后退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14709802/

相关文章:

ios - 服务器端如何将来自同一手机的 2 个不同请求解释为具有 2 个不同的 IP?

javascript - fs.readdir 失败,不知道为什么

node.js - 启动 nodejs : openssl config failed 时出错

javascript - 在 iis 本地主机上运行 Node Js

javascript - 简单的 Express.js 应用程序运行时出错

javascript - 用 Angular 2 CLI 表达

node.js - 我如何在 React.js 中获取 http header

node.js - jade能在不刷新页面的情况下显示新的值吗?

node.js - mvc架构中如何使用缓存数据

javascript - 使用请求模块发布表单数据 - Nodejs 和 Express