在Mongoose findbyId操作中执行push操作后数组为空

时间:2014-03-11 15:17:03

标签: node.js mongoose

我试图在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

1 个答案:

答案 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'));
});