Saya akui, kasus ini agak aneh. Ini untuk v2.2 dari mongodb-native.
Pertama-tama, find
memiliki dua penggunaan berbeda . Anda dapat memberikan fungsi panggilan balik atau tidak. Namun dalam apapun , ia mengembalikan secara serempak Sebuah Objek. Lebih tepatnya itu adalah kursor .Kita bisa mengharapkan mekanisme asinkron saat melewati panggilan balik tetapi tidak di sini.
collection.find({ }, function (err, cursor) {
assert(!err);
});
console.log('This happens after collection.find({ }, callback)');
ATAU
const cursor = collection.find({});
console.log('Also happening after');
Di sisi lain, toArray
adalah fungsi asinkron dan juga memiliki dua penggunaan yang berbeda. Kali ini, objek yang dikembalikan berbeda tergantung pada argumennya.
Setara:
cursor.toArray(function (err, documents) {
assert.equal(1, documents.length);
});
DAN
cursor.toArray()
.then(documents => {
assert.equal(1, documents.length);
});
Pada panggilan pertama, toArray
mengembalikan undefined
sedangkan yang kedua, ia mengembalikan Promise
.