関数に次のものがあると仮定します。
exports.addnames = function(req, res) {
var names = ["Kelley", "Amy", "Mark"];
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]);
}
私の問題は、名前を保存した後、結果を返したいということです:
Person.find({}, function(err, doc) {
res.json(200, doc);
})
名前のコールバックがありますが、すべての名前を保存するための呼び出しが完了する前に、コードの最後のブロック (Persons.find({})) が実行されるようです...したがって、ユーザーがブラウザ、「doc」は空です... for ループが完了した後に Persons.find({}) が確実に呼び出されるようにする方法はありますか?