【问题标题】:Nodejs and Connect "next" functionalityNodejs 和连接“下一个”功能
【发布时间】:2011-10-17 03:46:15
【问题描述】:

似乎如果我想移到 Nodejs 中的“下一个”函数(通常可能是 Javascript?),我无法将参数传递给下一个函数。

这就是我的意思:

app.get('/webpage', SomeFunction, NextFunction);

function SomeFunction (req, res, next) {
    // Do things
    next();
}

function NextFunction (req, res) {
    // Do other things
}

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

【问题讨论】:

    标签: javascript node.js connect middleware next


    【解决方案1】:

    这是Connect(负责此行为的node.js 中间件)设计的一个有意方面。您的中间件接收到的next 函数不是堆栈中的下一个中间件;它是 Connect 生成的一个函数,它要求下一个中间件处理它(以及做一些额外的事情来处理特殊情况,比如没有“下一个中间件”时)。

    如果您的中间件应该返回响应,请执行此操作。如果不应该,则暗示某些稍后的中间件应该返回响应。如果您需要将数据传递到流程的后面部分,则应将其附加到请求对象req 的适当部分。

    例如,捆绑的bodyParser中间件负责根据请求正文的内容填充req.rawBodyreq.body。捆绑的 basicAuth 中间件基于 HTTP 身份验证填充 req.remoteUser

    这是您应该尝试模仿的模式:一堆中间件,每个中间件都执行基本的增量操作来处理请求。如果您尝试建模的内容不适合此范例,那么您可能应该只使用一个函数来处理请求,您可以根据需要调用所有自己的应用程序逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-21
      • 2018-10-31
      • 1970-01-01
      • 1970-01-01
      • 2022-09-30
      • 2015-03-18
      相关资源
      最近更新 更多