2017-04-05 89 views
-1

我有一个MongoDB的模型,如:的forEach MongoDB中阵列不工作

Data = { 
    dataID: String, 
    myarray:[] 
} 

我需要通过myArray的

在我的API来遍历我写这样的

Data.findOne({dataID: '1234567890'}, function(err, data){ 
    data.myarray.forEach(function(toMatch, index){ 
     data.myarray[index].key = value; 
    }); 

    data.save(function(err, data){ 
     if (err) { 
      return res.status(500).send(err); 
     } 
     return res.status(200).send(data) 
    }) 
}); 

数据没有得到保存,因为nodejs执行data.save foreach循环结束前

我MongoDB的文档中使用游标来遍历MongoDB中找到()函数,但我怎么可以遍历数组,等待它完成执行,然后调用data.save

+0

嗯..我没有看到该文件的任何文档返回给回调打电话给findOne。那是.forEach只是Array.prototype.forEach?如果是...那么我认为你是错误诊断问题。 –

回答

0

MongoDB的find返回数组所以你的情况的数据将数组和data.myarray将是不确定的,你不能执行将数据保存过

+0

对不起,它的一个错字可以让我们说Data.findOne({})代替Data.find({}) – Bhavesh

+0

forEach不是异步它的阻塞所以data.save在forEach完成迭代之前无法执行,另一个问题,我注意到你回来的球员是什么? – kaxi1993

+0

是的,这不是在这里发生,data.save没有将数据保存在数据库(它不是玩家只返回其数据返回) – Bhavesh