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 数据,然后您的路由处理程序应该将该数据或错误转换为响应。
我尝试在 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 数据,然后您的路由处理程序应该将该数据或错误转换为响应。