我正在尝试创建一个钩子,我在其中循环响应的每个结果,根据当前对象查找用户并将其作为另一个属性附加到最终响应。但是,异步调用不允许我发送正确的响应:
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上的每个结果?
答案 0 :(得分:1)
是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();
});
});