Признавам ви, този случай е малко странен. Ето за v2.2 на mongodb-native.
Първо, find
има две различни употреби . Можете или да дадете функция за обратно извикване, или не. Но във всички случаи , той се връща синхронно предмет. По-точно това е курсор .Можем да очакваме асинхронен механизъм при предаване на обратно извикване, но не и тук.
collection.find({ }, function (err, cursor) {
assert(!err);
});
console.log('This happens after collection.find({ }, callback)');
ИЛИ
const cursor = collection.find({});
console.log('Also happening after');
От друга страна, toArray
е асинхронна функция и също има две различни употреби. Този път върнатият обект е различен в зависимост от аргументите.
Еквивалентни са:
cursor.toArray(function (err, documents) {
assert.equal(1, documents.length);
});
И
cursor.toArray()
.then(documents => {
assert.equal(1, documents.length);
});
В първото извикване, toArray
връща undefined
докато във втория връща Promise
.