Jag medger att det här fallet är lite konstigt. Här är för v2.2 av mongodb-native.
Först av allt, find
har två olika användningsområden . Du kan antingen ge en återuppringningsfunktion eller inte. Men i i alla fall , returnerar den synkront ett objekt. Mer exakt är det en markör .Vi kan förvänta oss en asynkron mekanism när vi skickar en återuppringning men inte här.
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');
Å andra sidan, toArray
är en asynkron funktion och har även två olika användningsområden. Den här gången är det returnerade objektet annorlunda beroende på argumenten.
Är likvärdiga:
cursor.toArray(function (err, documents) {
assert.equal(1, documents.length);
});
OCH
cursor.toArray()
.then(documents => {
assert.equal(1, documents.length);
});
I det första anropet, toArray
returnerar undefined
medan den i den andra returnerar ett Promise
.