JS,Async(lib),Express。异步中的response()无法正常工作

时间:2017-08-04 15:55:34

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


在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对象。此外,它会向我的服务器返回一些内容,这也很糟糕 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

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

next(err)

或者像这样:

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

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

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