我无法成功链接我的路由处理程序?

时间:2015-06-22 05:52:37

标签: javascript node.js express

我有一个node.js / express app我正在研究和看起来像的路线 -

app.post('/user/:who/update', isLoggedIn, userUpdate.save);

在userUpdate.save中我正在调用res.redirectres.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()是什么,似乎并不是它实际上是什么。我错过了什么?

1 个答案:

答案 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);

});