Admito que este caso é um pouco estranho. Aqui está a versão 2.2 do mongodb-native.
Em primeiro lugar,
find
tem dois usos diferentes . Você pode dar uma função de retorno de chamada ou não. Mas em qualquer caso , ele retorna de forma síncrona um objeto. Mais precisamente, é um cursor .Poderíamos esperar um mecanismo assíncrono ao passar um retorno de chamada, mas não aqui. 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');
Por outro lado,
toArray
é uma função assíncrona e também tem dois usos diferentes. Desta vez, o objeto retornado é diferente dependendo dos argumentos. São equivalentes:
cursor.toArray(function (err, documents) {
assert.equal(1, documents.length);
});
E
cursor.toArray()
.then(documents => {
assert.equal(1, documents.length);
});
Na primeira chamada,
toArray
retorna undefined
enquanto no segundo, ele retorna uma Promise
.