MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Comprensione trova in Node/Mongo

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 .