Je vous l'accorde, cette affaire est un peu bizarre. Voici pour la v2.2 de mongodb-native.
Tout d'abord, find
a deux utilisations différentes . Vous pouvez soit donner une fonction de rappel ou non. Mais dans tous les cas , il renvoie de manière synchrone un objet. Plus précisément, il s'agit d'un curseur .On pourrait s'attendre à un mécanisme asynchrone lors du passage d'un callback mais pas ici.
collection.find({ }, function (err, cursor) {
assert(!err);
});
console.log('This happens after collection.find({ }, callback)');
OU
const cursor = collection.find({});
console.log('Also happening after');
D'autre part, toArray
est une fonction asynchrone et a également deux utilisations différentes. Cette fois, l'objet retourné est différent selon les arguments.
Sont équivalents :
cursor.toArray(function (err, documents) {
assert.equal(1, documents.length);
});
ET
cursor.toArray()
.then(documents => {
assert.equal(1, documents.length);
});
Au premier appel, toArray
renvoie undefined
alors que dans le second, il renvoie une Promise
.