Jeg indrømmer dig, denne sag er lidt mærkelig. Her er for v2.2 af mongodb-native.
Først og fremmest find
har to forskellige anvendelser . Du kan enten give en tilbagekaldsfunktion eller ej. Men under i alle tilfælde , returnerer den synkront et objekt. Mere præcist er det en cursor .Vi kunne forvente en asynkron mekanisme, når vi sender et tilbagekald, men ikke her.
collection.find({ }, function (err, cursor) {
assert(!err);
});
console.log('This happens after collection.find({ }, callback)');
ELLER
const cursor = collection.find({});
console.log('Also happening after');
På den anden side, toArray
er en asynkron funktion og har også to forskellige anvendelser. Denne gang er det returnerede objekt anderledes afhængigt af argumenterne.
Er tilsvarende:
cursor.toArray(function (err, documents) {
assert.equal(1, documents.length);
});
OG
cursor.toArray()
.then(documents => {
assert.equal(1, documents.length);
});
I det første opkald, toArray
returnerer undefined
mens den i den anden returnerer et Promise
.