Ti ammetto, questo caso è un po' strano. Ecco per la v2.2 di mongodb-native.
Prima di tutto, find
ha due diversi usi . Puoi dare una funzione di richiamata o meno. Ma in comunque , restituisce in modo sincrono un oggetto. Più precisamente è un cursore .Potremmo aspettarci un meccanismo asincrono quando si passa un callback ma non qui.
collection.find({ }, function (err, cursor) {
assert(!err);
});
console.log('This happens after collection.find({ }, callback)');
O
const cursor = collection.find({});
console.log('Also happening after');
D'altra parte, toArray
è una funzione asincrona e ha anche due usi diversi. Questa volta, l'oggetto restituito è diverso a seconda degli argomenti.
Sono equivalenti:
cursor.toArray(function (err, documents) {
assert.equal(1, documents.length);
});
E
cursor.toArray()
.then(documents => {
assert.equal(1, documents.length);
});
Nella prima chiamata, toArray
restituisce undefined
mentre nel secondo restituisce una Promise
.