0
我有名字的数组:如何正确保存与猫鼬+ nodejs对象的数组?
变种名称=“凯利”,“艾米”,“标记”]
假设人只是为了一个的NodeJS猫鼬模型......我要保存的每个名称作为文档到MongoDB的下列要求:
for(var i = 0; i < names.length; i++) {
name_now = names[i];
Person.findOne({ name: name_now},
function(err, doc) {
if(!err && !doc) {
var personDoc = new PersonDoc();
personDoc.name = name_now;
console.log(personDoc.name);
personDoc.save(function(err) {});
} else if(!err) {
console.log("Person is in the system");
} else {
console.log("ERROR: " + err);
}
}
)
}
我有问题,我保持歌厅一个“错误创建时间表:MongoError:E11000重复键错误指数:..... DUP键:{”标记”}”。而且它似乎试图将“标记”(列表中的最后一个元素)插入3次,而不是列表中的每个名称。
当我尝试打印出当前人在循环中的名称(使用console.log(personDoc.name);)时,我得到了“标记”3次......并且它似乎只保存了数据库中的“标记”,没有其他人......处理这个问题的正确方法是什么?
这很好,谢谢!但是我想在执行for循环之后,在同一个函数内做一个Person.find({})来获取插入后的所有文档。在执行Person.find({})之前,如何确保循环完成? – Rolando
@Damascusi最好作为一个单独的问题发布,因为它是不平凡的。首先进行一些搜索,因为这是常见的情况。 – JohnnyHK