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

Forstå find i Node/Mongo

Jeg indrømmer dig, denne sag er lidt mærkelig. Her er for v2.2 af mongodb-native.

Først og fremmest find har to forskellige anvendelser . Du kan enten give en tilbagekaldsfunktion eller ej. Men under i alle tilfælde , returnerer den synkront et objekt. Mere præcist er det en cursor .Vi kunne forvente en asynkron mekanisme, når vi sender et tilbagekald, men ikke her.

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

ELLER

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

På den anden side, toArray er en asynkron funktion og har også to forskellige anvendelser. Denne gang er det returnerede objekt anderledes afhængigt af argumenterne.

Er tilsvarende:

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

OG

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

I det første opkald, toArray returnerer undefined mens den i den anden returnerer et Promise .




  1. MongoDB Compass problem med WSL2

  2. Sådan bruger du Redis Sorterede lister

  3. Dynamiske attributter med Rails og Mongoid

  4. Sådan $setDifference i array &Object ved hjælp af Mongo DB