Пожалуйста, посмотрите на фрагмент кода ниже. У меня есть массив объектов JSON с именем «stuObjList». Я хочу пройти через массив, чтобы найти определенные объекты JSON с определенным набором флагов, а затем сделать вызов БД для получения дополнительных данных.
Конечно, цикл FOR не ждет возврата вызова db и достигает конца с j == length. И когда вызов db возвращается, индекс «j» выходит за пределы индекса массива. Я понимаю, как работает node.js, и это ожидаемое поведение.
Мой вопрос в том, что здесь делается. Как мне достичь того, чего я пытаюсь достичь?
...............
...............
...............
else
{
console.log("stuObjList.length: " + stuObjList.length);
var j = 0;
for(j = 0; j < stuObjList.length; j++)
{
if(stuObjList[j]['honor_student'] != null)
{
db.collection("students").findOne({'_id' : stuObjList[j]['_id'];}, function(err, origStuObj)
{
var marker = stuObjList[j]['_id'];
var major = stuObjList[j]['major'];
});
}
if(j == stuObjList.length)
{
process.nextTick(function()
{
callback(stuObjList);
});
}
}
}
});