私はあなたを認めます、この場合は少し奇妙です。これはmongodb-nativeのv2.2用です。
まず、find
2つの異なる使用法> 。コールバック関数を指定することも、指定しないこともできます。ただし、いずれの場合も 、同期的にを返します オブジェクト。より正確には、カーソル 。コールバックを渡すときに非同期メカニズムを期待できましたが、ここでは期待できませんでした。
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
は非同期関数であり、2つの異なる使用法もあります。今回は、引数によって返されるオブジェクトが異なります。
同等です:
cursor.toArray(function (err, documents) {
assert.equal(1, documents.length);
});
そして
cursor.toArray()
.then(documents => {
assert.equal(1, documents.length);
});
最初の呼び出しでは、toArray
undefined
を返します 一方、2番目の例では、Promise
を返します。 。