在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对象。此外,它会向我的服务器返回一些内容,这也很糟糕 谢谢你的帮助。
答案 0 :(得分:0)
您的问题与范围无关。这是res
不是函数,所以你不能像res(err)
那样调用它。 res
是一个带方法的对象。你可以像这样发送一个错误响应,它将转到Express中的默认错误处理程序:
next(err)
或者像这样:
res.status(500).send("Internal Error occurred").
在响应中发送500状态,然后发送您想要描述错误的任何内容。
我想不出任何想要将res
对象传递到后端的情况。您的后端应该获取并返回数据,然后您的路由处理程序应该将该数据或错误转换为响应。