我可以'我没有成功地链接我的路由处理程序

I can't successfully chain my route handlers?

本文关键字:我的 链接 我的路 路由 程序 处理 成功 我可以      更新时间:2023-09-26

我正在开发一个node.js/express应用程序,并且路由看起来像-

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

在userUpdate.save内部,我正在调用res.redirectres.render(不同的路由,但想法相同)。我不喜欢这样。我想把我的res.*调用保存在routes.js中,但当我尝试这个时

app.post('/user/:who/update', isLoggedIn, userUpdate.save, function(req, res) { res.redirect('/user/'+req.user.local.username); });

userUpdate.save结束时调用next(req, res),则不会调用res.redirect函数。我认为next()是什么,似乎并不是它实际的样子。我错过了什么?

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);
});