Ik geef toe, deze zaak is een beetje raar. Hier is voor de v2.2 van mongodb-native.
Allereerst, find
heeft twee verschillende toepassingen . Je kunt een callback-functie geven of niet. Maar in in ieder geval , het retourneert synchroon een voorwerp. Meer precies is het een cursor .We zouden een asynchroon mechanisme kunnen verwachten bij het doorgeven van een callback, maar niet hier.
collection.find({ }, function (err, cursor) {
assert(!err);
});
console.log('This happens after collection.find({ }, callback)');
OF
const cursor = collection.find({});
console.log('Also happening after');
Aan de andere kant, toArray
is een asynchrone functie en heeft ook twee verschillende gebruiksmogelijkheden. Deze keer is het geretourneerde object anders, afhankelijk van de argumenten.
Zijn gelijkwaardig:
cursor.toArray(function (err, documents) {
assert.equal(1, documents.length);
});
EN
cursor.toArray()
.then(documents => {
assert.equal(1, documents.length);
});
In de eerste aanroep, toArray
retourneert undefined
terwijl het in de tweede een Promise
. retourneert .