Das ist die korrekte Callback-Syntax, aber was find
stellt für den Callback einen Cursor
bereit , nicht eine Reihe von Dokumenten. Wenn Sie also möchten, dass Ihr Rückruf Ergebnisse als Array von Dokumenten liefert, rufen Sie toArray
auf auf dem Cursor, um sie zurückzugeben:
collection.find({'_id':o_id}, function(err, cursor){
cursor.toArray(callback);
db.close();
});
Beachten Sie, dass der Callback Ihrer Funktion immer noch einen err
liefern muss Parameter, damit der Aufrufer weiß, ob die Abfrage funktioniert hat oder nicht.
2.x-Treiberaktualisierung
find
gibt jetzt den Cursor zurück, anstatt ihn über einen Rückruf bereitzustellen, sodass die typische Verwendung vereinfacht werden kann zu:
collection.find({'_id': o_id}).toArray(function(err, results) {...});
Oder in diesem Fall, wo ein einzelnes Dokument erwartet wird, ist es einfacher, findOne
zu verwenden :
collection.findOne({'_id': o_id}, function(err, result) {...});