我有一个node.js / express app我正在研究和看起来像的路线 -
app.post('/user/:who/update', isLoggedIn, userUpdate.save);
在userUpdate.save中我正在调用res.redirect
或res.render
(不同的路由,但想法相同)。我不喜欢这个。我想在routes.js中保留我的res。*调用,但是当我尝试这个时
app.post('/user/:who/update', isLoggedIn, userUpdate.save, function(req, res) {
res.redirect('/user/'+req.user.local.username);
});
在next(req, res)
结束时调用userUpdate.save
,未调用res.redirect
函数。我认为next()
是什么,似乎并不是它实际上是什么。我错过了什么?
答案 0 :(得分:0)
对next()
的调用会绕过剩余的回调。
请参阅此参考http://expressjs.com/api.html#app.post.method
看看这个例子并交替注释掉每个next()
调用(然后是两个调用),并观察执行的流程。
var express = require('express');
var app = express();
app.get('/test', function(req, res, next){
console.log('/test callback1');
next('route');
//next();
}, function(res, res, next){
console.log('/test callback2');
res.send('sent from /test/cb2')
});
app.get('/test', function(req, res){
console.log('response from /test route handler 2');
res.send('sent from /test route handler 2');
})
var server = app.listen(8911, function (s) {
console.log('Listening on port ', server.address().port);
});