在 for 循环 Loopback 中附加来自回调函数的数据
Attaching data from callback function inside a for loop Loopback
我正在尝试创建一个挂钩,在其中循环响应的每个结果,根据当前对象查找用户并将其作为另一个属性附加到最终响应。但是,异步调用不允许我发送正确的响应:
Board.afterRemote('find',function(context,boards,next){
var users = [];
context.result.admin =[];
var User = app.models.User;
context.result.forEach(function(result){
User.findOne({where:{id:result.adminId}},function(err,user){
result.admin = user;
});
});
console.log("result: "+JSON.stringify(context.result));
next();
});
如何才能将用户添加到 context.result 上的每个结果?
是和User.findOne
异步操作吗?如果是这样,我建议使用像 async 这样的异步控制流库来迭代结果并对每个项目执行异步操作。它看起来像这样:
Board.afterRemote('find',function(context,boards,next){
async.each(context.result, function(result, callback) {
User.findOne({where:{id:result.adminId}},function(err,user){
result.admin = user;
callback(err) // Done with this iteration
});
}, function(err) { // Called once every item has been iterated over
console.log("result: "+JSON.stringify(context.result));
next();
});
});
我正在尝试创建一个挂钩,在其中循环响应的每个结果,根据当前对象查找用户并将其作为另一个属性附加到最终响应。但是,异步调用不允许我发送正确的响应:
Board.afterRemote('find',function(context,boards,next){
var users = [];
context.result.admin =[];
var User = app.models.User;
context.result.forEach(function(result){
User.findOne({where:{id:result.adminId}},function(err,user){
result.admin = user;
});
});
console.log("result: "+JSON.stringify(context.result));
next();
});
如何才能将用户添加到 context.result 上的每个结果?
是和User.findOne
异步操作吗?如果是这样,我建议使用像 async 这样的异步控制流库来迭代结果并对每个项目执行异步操作。它看起来像这样:
Board.afterRemote('find',function(context,boards,next){
async.each(context.result, function(result, callback) {
User.findOne({where:{id:result.adminId}},function(err,user){
result.admin = user;
callback(err) // Done with this iteration
});
}, function(err) { // Called once every item has been iterated over
console.log("result: "+JSON.stringify(context.result));
next();
});
});