了解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的逻辑所取代。