Uznávám, tento případ je trochu zvláštní. Zde je verze 2.2 mongodb-native.
Nejprve find
má dvě různá použití . Můžete buď dát funkci zpětného volání, nebo ne. Ale v v každém případě , vrátí se synchronně objekt. Přesněji je to kurzor .Mohli bychom očekávat asynchronní mechanismus při předávání zpětného volání, ale ne zde.
collection.find({ }, function (err, cursor) {
assert(!err);
});
console.log('This happens after collection.find({ }, callback)');
NEBO
const cursor = collection.find({});
console.log('Also happening after');
Na druhou stranu toArray
je asynchronní funkce a má také dvě různá použití. Tentokrát se vrácený objekt liší v závislosti na argumentech.
Jsou ekvivalentní:
cursor.toArray(function (err, documents) {
assert.equal(1, documents.length);
});
A
cursor.toArray()
.then(documents => {
assert.equal(1, documents.length);
});
V prvním volání toArray
vrátí undefined
zatímco ve druhém vrací Promise
.