【发布时间】:2015-12-26 03:40:43
【问题描述】:
希望得到您的帮助。
我有收集任务,其中包含类似此架构的文档。
Task = {
title:'taskName',
performers:[ {userId:1,price:230}, {userId:2,price:260} ]
}
Profiles = { id:1, name: 'Alex', surname: 'Robinson', etc.. }
最后,我应该收集所有数据,并作为响应返回配置文件对象数组。问题是 for 循环在完成每个元素的所有 .findOne() 之前结束,它返回空数组。 这是获取的代码形式。
代码在这里:
apiRoutes.get('/performers/:id', function(req,res,next){
var profArr = [];
Task.findOne({'_id':req.params.id},function(err, doc){
for(var i = 0; i<doc.performers.length; i++){
var profile = {
price: 0,
name: '',
surname: ''
};
profile.price = doc.performers[i].price;
Profile.findOne({'_id':doc.performers[i].userId},function(err,doc){
if (err) throw err;
profile.name = doc.name;
profile.surname = doc.surname;
profArr.push(profile);
});
}
return res.json({success:true,
message:'Performers data collected',
data:profArr});
});
【问题讨论】:
标签: javascript arrays node.js mongodb mongoose