MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Find in Node/Mongo verstehen

Ich gebe zu, dieser Fall ist etwas seltsam. Hier ist für v2.2 von mongodb-native.

Zuerst find hat zwei verschiedene Verwendungen . Sie können entweder eine Rückruffunktion angeben oder nicht. Aber auf jeden Fall , gibt es synchron zurück ein Objekt. Genauer gesagt ist es ein Cursor .Wir könnten einen asynchronen Mechanismus erwarten, wenn ein Rückruf übergeben wird, aber nicht hier.

collection.find({ }, function (err, cursor) {
  assert(!err);
});
console.log('This happens after collection.find({ }, callback)');

ODER

const cursor = collection.find({});
console.log('Also happening after');

Andererseits toArray ist eine asynchrone Funktion und hat auch zwei verschiedene Verwendungen. Diesmal ist das zurückgegebene Objekt je nach Argument unterschiedlich.

Sind gleichwertig:

cursor.toArray(function (err, documents) {
  assert.equal(1, documents.length);
});

UND

cursor.toArray()
  .then(documents => {
    assert.equal(1, documents.length);
  });

Beim ersten Aufruf toArray gibt undefined zurück wohingegen im zweiten ein Promise zurückgegeben wird .