了解express.js / sail.js控制器范围内的下一个中间件

我使用的是build立在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();

你调用next()而不是仅返回一些值的原因是允许asynchronous串行链接中间件操作。 例如:

 function(req, res, next){ setTimeout(next, 1000); } 

这是一个没用的中间件的例子,除了延迟响应一秒之外什么也不做。 具体说明在这种情况下, next()函数返回执行。

在更现实的情况下,例如, setTimeout()当然会被一些执行数据库获取并接受callback的逻辑所取代。