in nodejs, wie man eine FOR-Schleife stoppt, bis der mongodb-Aufruf zurückkehrt

Bitte schauen Sie sich das Code-Snippet unten an. Ich habe ein Array von JSON-Objekten mit dem Namen 'stuObjList'. Ich möchte das Array durchlaufen, um bestimmte JSON-Objekte mit einem bestimmten Flag-Satz zu finden, und dann einen DB-Aufruf ausführen, um weitere Daten abzurufen.

Natürlich wartet die FOR-Schleife nicht auf die Rückkehr des db-Aufrufs und erreicht mit j == length das Ende von. Und wenn der db-Aufruf zurückkehrt, liegt der Index 'j' jenseits des Array-Index. Ich verstehe, wie node.js funktioniert und dies ist das erwartete Verhalten.

Meine Frage ist, was ist die Arbeit hier. Wie kann ich das erreichen, was ich erreichen möchte? Danke, --su

...............
...............
...............
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);
      });
    }
  }
}
});

Antworten auf die Frage(4)

Ihre Antwort auf die Frage