मैं आपको मानता हूं, यह मामला थोड़ा अजीब है। यहाँ mongodb-native के v2.2 के लिए है।
सबसे पहले, 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
returns देता है ।