【问题标题】:JS, Async (lib), Express. response( ) inside async not workingJS,异步(库),快递。异步内部的响应()不起作用
【发布时间】:2018-01-12 15:25:58
【问题描述】:


我尝试在 Async.waterfall([], cb) 内部的一些异步内容完成后调用 res() 但看起来,req/res 对象在该范围内不可用。我从我的回调 cb 中调用它们。

function (req, res, next) {
var query = req.query;
async.waterfall([
    async.apply(userManager.register, query.username, query.email, query.password)
], function (err, result) {
    if (err)
        console.log(err);
    if (err && err.internal == false)
        return res(err); //TypeError: res is not a function

    console.log(result);
});

我想到的唯一解决方案是将 req/res 传递到我的后端,然后在那里调用它。 但这意味着我的后台代码需要有一个 req 和 res 对象。此外,它会向我的服务器返回一些东西,这也很糟糕。
感谢您的帮助。

【问题讨论】:

  • 完全正确; Express'res 不是函数。

标签: javascript node.js express asynchronous async.js


【解决方案1】:

您的问题与范围无关。就是res 不是一个函数,所以你不能像res(err) 那样调用它。 res 是一个带有方法的对象。您可以像这样发送错误响应,这将转到 Express 中的默认错误处理程序:

next(err)

或者像这样:

res.status(500).send("Internal Error occurred").

在响应中发送 500 状态,然后发送您想要描述错误的任何内容。

我想不出您想将res 对象传递到后端的任何情况。您的后端应该获取并返回数据,然后您的路由处理程序应该将该数据或错误转换为响应。

【讨论】:

  • 哇。在我作为软件工程师的教育期间,我做了一年这样的事情。同样在那个项目中,有几个 res.send()。我可能在那里有某种大脑滞后。无论如何,感谢您非常友好的回答。它奏效了。
  • @BlackPhoenix134 - 这能回答你的问题吗?如果是这样,您可以通过单击答案左侧的绿色复选标记向社区表明这一点,这也将为您赢得一些声誉积分。
猜你喜欢
  • 1970-01-01
  • 2015-08-19
  • 2020-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-26
  • 1970-01-01
相关资源
最近更新 更多