JS、异步(lib)、Express。异步内部的响应()不起作用

JS, Async (lib), Express. response( ) inside async not working


我尝试在 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 对象。而且它 returns 对我的服务器有影响,这也很糟糕。
感谢您的帮助。

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

next(err)

或者像这样:

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

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

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