2017-04-05 91 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