Nodejs和连接“下一个”function

看来,如果我想要移动到Nodejs中的“下一个”function(通常可能是Javascript),我不能将parameter passing给下一个函数。

这是我的意思:

app.get('/webpage', SomeFunction, NextFunction); function SomeFunction (req, res, next) { // Do things next(); } function NextFunction (req, res) { // Do other things } 

现在,如果在SomeFunction我要说next(req, res); 它似乎没有工作。 它永远不会去的方法。 显然我不能直接传递参数…但是我的问题是为什么? 下一个函数如何知道使用哪个参数? 是因为它们被命名为相同还是自动传递第一个和第二个参数? 如果NextFunction使用blah, bleet而不是req, res会继续工作吗?

这是Connect (负责这种行为的node.js中间件)devise的一个有意思的方面。 中间件接收的nextfunction不是堆栈中的下一个中间件; 这是Connect生成的一个函数,它要求下一个中间件来处理它(还有一些额外的东西来处理特殊情况,比如没有“下一个中间件”)。

如果你的中间件应该返回一个响应,就这样做。 如果不应该的话,这意味着一些后来的中间件应该返回一个响应。 如果您需要将数据传递到stream程的后面部分,则应将其附加到请求对象req的相应部分。

例如,捆绑的bodyParser中间件负责根据请求主体的内容填充req.rawBodyreq.body 。 捆绑的basicAuth中间件基于HTTPauthentication来填充req.remoteUser

这是您应该尝试模仿的模式:一堆中间件,每个中间件都会执行一个基本的增量事件来处理请求。 如果你想要build模的东西不适合这个范例,那么你应该只有一个函数来处理请求,你可以从中调用所有你自己的应用程序逻辑。