Ich gebe zu, dieser Fall ist etwas seltsam. Hier ist für v2.2 von mongodb-native.
Zuerst find
hat zwei verschiedene Verwendungen . Sie können entweder eine Rückruffunktion angeben oder nicht. Aber auf jeden Fall , gibt es synchron zurück ein Objekt. Genauer gesagt ist es ein Cursor .Wir könnten einen asynchronen Mechanismus erwarten, wenn ein Rückruf übergeben wird, aber nicht hier.
collection.find({ }, function (err, cursor) {
assert(!err);
});
console.log('This happens after collection.find({ }, callback)');
ODER
const cursor = collection.find({});
console.log('Also happening after');
Andererseits toArray
ist eine asynchrone Funktion und hat auch zwei verschiedene Verwendungen. Diesmal ist das zurückgegebene Objekt je nach Argument unterschiedlich.
Sind gleichwertig:
cursor.toArray(function (err, documents) {
assert.equal(1, documents.length);
});
UND
cursor.toArray()
.then(documents => {
assert.equal(1, documents.length);
});
Beim ersten Aufruf toArray
gibt undefined
zurück wohingegen im zweiten ein Promise
zurückgegeben wird .