Javascript Express Post函数中回调的执行顺序
我在[express的路线处理方法]方面遇到了问题,特别是Post功能。Javascript Express Post函数中回调的执行顺序,javascript,node.js,express,callback,Javascript,Node.js,Express,Callback,我在[express的路线处理方法]方面遇到了问题,特别是Post功能。 () 我正在尝试解析来自的一段代码 快递文件上说 给出了多个回调,所有回调都被平等对待,其行为就像中间件一样 我的问题是,以下陈述是否准确: 中间件就像一束连接在一起的管子。首先出现的中间件是首先列出的中间件。如果数据是水,则它将流经首先列出的管道 路由处理方法中的回调也是如此:回调是链接在一起的管道,如果通过这些“管道”注入数据,则通过列出的第一个回调,然后依次注入第二个回调。这是真的吗 作为后续问题,这些回调应该返回什
() 我正在尝试解析来自的一段代码 快递文件上说 给出了多个回调,所有回调都被平等对待,其行为就像中间件一样 我的问题是,以下陈述是否准确: 中间件就像一束连接在一起的管子。首先出现的中间件是首先列出的中间件。如果数据是水,则它将流经首先列出的管道 路由处理方法中的回调也是如此:回调是链接在一起的管道,如果通过这些“管道”注入数据,则通过列出的第一个回调,然后依次注入第二个回调。这是真的吗
作为后续问题,这些回调应该返回什么?第一个回调是否返回响应,第二个回调接收响应并将其视为请求?应该从管道中输出什么,我可以将其插入第二个管道吗?在这种情况下,回调返回什么并不重要。他们正在调用
next
函数(此特定passport示例中未定义的第三个参数)。调用next
函数时,将使用与第一个中间件相同的参数依次调用下一个中间件(相同的req
,相同的res
)
假设你有这个密码
function myFirstMiddleware(req, res, next) {//note the third parameter
//you can change req and res objects
next();
}
function secondMiddlewareInTheSequence(req, res, next) {
//here you get the changes you've done to req and res since they are
//the same objects
res.end();
}
app.post('/', myFirstMiddleware, secondMiddlewareInTheSequence);
passport.authenticate在内部做的是,如果您的请求经过正确的身份验证,则调用next
,这样您的中间件就可以获得控制权
您甚至可能不希望根据给定的条件(与passport所做的差不多)将控制权传递给其他中间软件,如下所示
function checkSecret(req, res, next) {
if(req.query && req.query.secret === '42') {
console.log('you are allowed to pass!');
next();
} else {
console.log('you shall not pass!');
res.status(403).end();
}
}
如果将上述函数放在任何其他中间件之前,将阻止不包含机密的请求继续 解释得很清楚!因此,它基本上是相同的请求和响应对象,由不同的中间件一个接一个地进行调整。耶!对于正在发生的事情,我有一个很好的心智模型!如果你想更深入一点,看看谢谢你的提示!呼…这对我来说有点深。
function checkSecret(req, res, next) {
if(req.query && req.query.secret === '42') {
console.log('you are allowed to pass!');
next();
} else {
console.log('you shall not pass!');
res.status(403).end();
}
}