在
findOne
回调,
name_now
总是设置为中的姓氏
names
因为
for
循环在调用第一个回调之前就完成了。您需要创建一个即时函数来捕获当前
名称(_now)
值,并将其保留以在回调中使用:
for(var i = 0; i < names.length; i++) {
(function (name_now) {
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);
}
}
);
)(names[i]);
}