的NodeJS +快遞,MongoDB的+貓鼬的NodeJS:保存功能在for循環,異步麻煩
我有一個JSON提要其中每個記錄都有一套「場地」屬性,如「地名」,「場地位置(事「」場地電話「等)。我想創建一個飼料中所有場地的集合 - 每個場地的一個實例,沒有模糊。
我循環瀏覽JSON並測試會場中是否存在會場。如果沒有,請保存。
jsonObj.events.forEach(function(element, index, array){
Venue.findOne({'name': element.vname}, function(err,doc){
if(doc == null){
var instance = new Venue();
instance.name = element.vname;
instance.location = element.location;
instance.phone = element.vphone;
instance.save();
}
}
}
期望的:所有場地的列表(沒有模糊)。
結果:在場館收集中有大量的投資。
基本上,循環爲JSON提要中的每個記錄創建了一個新的Venue記錄。
我正在學習Node及其異步特性,所以我相信即使在第一個save()函數完成之前for循環也會完成 - 所以if語句總是檢查一個空集合。 Console.logging支持此聲明。
我不知道如何重做這個,以便它執行所需的任務。我嘗試過caolan的異步模塊,但我無法獲得幫助。我錯誤地使用了一個很好的機會。
非常感謝你指點我在正確的方向 - 我已經無濟於事。如果異步模塊是正確的答案,我很樂意幫助你解決這個問題。
再次感謝!
啊哈!是的,它做到了。我正在使用Mongoose並忽略了設置唯一索引。謝謝保羅! – Ghan 2012-03-16 03:36:29