我试图在Mongoose FindById操作之后将对象插入数组。在for循环执行后它显示为空。请帮助。我已经在下面附加了一个片段。谢谢
var list=[]
for( var i=0;i<groupdata.length;i++){
Group.findById(groupdata[i],function(err,group){
if(err){
return callback(err,null)
}
for(var j=0;j<group.members.length;j++){
list.push(group.members)
}
});
}
console.log(list)---->showing empty array
答案 0 :(得分:0)
如果没有更多信息,很难进行测试,但您可能只需将其更改为:
var list=[]
for( var i=0; i < groupdata.length; i++){
Group.findById(groupdata[i],function(err,group){
if(err){
return callback(err,null)
}
for(var j=0;j<group.members.length;j++){
list.push(group.members[j])
}
});
}
console.log(list)
唯一的区别在于list.push(group.members)
行。我添加了[j]
。您也可以使用$in
和underscore.js库来简化代码:
Group.find({_id: {$in: groupdata}}).
exec(function(err, groups) {
//check out underscore.js's pluck for a quick way to do what you're after
var list = _.flatten(_.pluck(groups, 'members'));
});