我正在使用基于express.js构建的sails.js。 在我的routes.js中,我定义了一条如下路线
'/account/login': {
controller : 'Session',
action : 'logInAPI'
},
我的会话控制器就像这样
logInAPI: function(req, res, next) {
if (!req.param('email') || !req.param('password')) {
var usernamePasswordRequiredError = [
'You must enter a username and a password.'
]
req.session.flash = {
err: usernamePasswordRequiredError
}
return next();
}
else{// Log in user};
}
我想知道我什么时候打电话给下一个指向中间装的地方。如果只写回来会发生什么;而不是返回next();
答案 0 :(得分:3)
您调用next()
而不是仅返回某个值的原因是允许异步串行链接中间件操作。例如:
function(req, res, next){
setTimeout(next, 1000);
}
这是一个无用的中间件的例子,除了延迟响应一秒钟之外什么都不做。请特别注意,在这种情况下,next()
在函数返回后执行。
在更现实的情况下,setTimeout()
当然会被一些执行数据库提取并接受回调的逻辑所取代。例如。