【问题标题】:How do you access values passed to next() functions in Node如何访问传递给 Node 中的 next() 函数的值
【发布时间】:2013-12-20 23:03:41
【问题描述】:

我正在使用 NodeExpress.js 为我正在处理的项目编写后端。

next() 函数在中间件中用于移动到中间件链中的下一部分,最后进入app.VERB() 函数。我在哪里以及如何(进一步)访问这个变量?

示例代码:

app.use(function (req, res, next) {

    User.findOne({
            'email': emailValue
        }, function (err, foundUser) {

            if (err) return next(err); 

            // Else do something
        }
    }); 
});

什么可以访问传递给next()err 值?

【问题讨论】:

  • 这对您有帮助吗? stackoverflow.com/questions/18875292/…
  • 它很有用,但不能回答next(var) 的问题。这是我可以使用的东西,但这似乎是内置的功能。我一直看到next(err)。什么可以访问该变量?
  • 如果出现错误,中间件将停止处理。这就是您发出错误信号的方式。这不是你传递值的方式。
  • 正如@StefanMoraru 链接的那样,传递值的一种方法是将它们存储在req 参数中。

标签: javascript node.js express middleware


【解决方案1】:

当您将错误参数传递给next 时,Express 会调用您已安装的任何错误中间件处理程序。错误中间件函数有四个参数,因此您可以将自己的处理程序安装为:

app.use(function(err, req, res, next) {
    // handle the err from a previous middleware's next(err) call
});

您通常会将其添加到中间件链的末尾,以便它处理所有其他中间件的错误。

有关这方面的 Express 文档,请参阅 here

【讨论】:

  • 这是否也意味着app.get('/wherever', function (err, req, res, next) {...}); 可以工作?
  • 好的。所以我缺少的是这纯粹是为了错误。我很难在 Express 网站上找到任何东西。感谢您的帮助。
  • @Alexcoady 很高兴它有帮助。我在答案中添加了 Express 文档的链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-19
  • 1970-01-01
  • 1970-01-01
  • 2014-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多