Wenn ich ein Array von Zeichenfolgen mit Elementdaten (z. B. [„eins“, „zwei“, „drei“]) an die Serverseite sende, habe ich den folgenden Code, um das Array zu durchlaufen, zu prüfen, ob in MongoDB bereits ein Dokument mit dem Element vorhanden ist, und dann entsprechend neue Dokumente in zu erstellen Datenbank.
Serverseitiger Code:
Code: Select all
// items is an array of strings sent from the client side
for (var i = 0; i < items.length; i++) {
var item_name = items[i];
// For each item, find an existing one
Item.findOne({'name': item_name }, function(err, item) {
// If not already existing, add to database.
if (!item) {
var new_item = new Item();
new_item.name = item_name;
new_item.save(function(err) {
if (err) throw err;
});
}
});
}
}
Ich vermute, dass die Abfrage in der Datenbank länger dauert als die Schleife. Wenn wir uns also im Rückruf von findOne() befinden, haben wir bereits bis zum Ende des Arrays iteriert.
Ist das wahr? Wenn ja, wie könnte dieses Problem umgangen werden?
Ich verstehe, dass dies möglicherweise eine häufige Frage ist, die viele schon einmal gestellt haben, aber nach einiger Zeit der Suche bin ich immer noch nicht in der Lage, das Problem zu lösen. Bitte informieren Sie uns.
Mobile version