NodeJS + Express、MongoDB + Mongoose
我有一个 JSON 提要,其中每条记录都有一组“ field ”属性(例如“ field 名称”“ field 位置”“ field 电话”等)。我想创建提要中所有场所的集合 - 每个场所都有一个实例,没有重复。
我循环遍历 JSON 并测试该 field 是否存在于我的 field 集合中。如果没有,请保存。
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();
}
}
}
所需:所有 field 的列表(无重复)。
结果: field 收藏中有大量受骗者。
基本上,循环为 JSON feed 中的每条记录创建了一个新的 Venue 记录。
我正在学习 Node 及其异步特性,因此我相信 for 循环甚至在第一个 save() 函数完成之前就完成了 - 因此 if 语句始终检查空集合。 Console.logging 支持这一说法。
我不知道如何修改它以使其执行所需的任务。我已经尝试了 caolan 的异步模块,但我无法得到它的帮助。我很有可能使用不正确。
非常感谢您为我指明了正确的方向——我已经搜索无果。如果异步模块是正确的答案,我希望您能帮助我了解如何在这种特定情况下实现它。
再次感谢!
最佳答案
为什么不走另一条路呢?你没有说你的持久层是什么,但它看起来像 Mongoose 或可能是FastLegS。无论哪种情况,您都可以在名称字段上创建唯一索引。然后,您可以尝试保存任何内容,并在唯一索引违规时处理错误。
关于node.js - nodejs : save function in for loop, 异步问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9731139/