我有一个相当简单的 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/