sql >> Database >  >> NoSQL >> MongoDB

Retourneer resultaten mangoest in zoekopdracht naar een variabele

Er zijn verschillende manieren om te bereiken wat je wilt.

1. Mongoose-query's gebruiken

In deze strategie retourneert uw functie een Mongoose-query die u later kunt gebruiken om de methode exec aan te roepen en gebruik het om de resultaten te krijgen.

function getJedisQuery(name){
   var query = Jedi.find({name:name});
   return query;
}

Dan kun je het gewoon gebruiken door:

var query =  getJedisQuery('Obi-wan');
query.exec(function(err,jedis){
   if(err)
      return console.log(err);
   jedis.forEach(function(jedi){
      console.log(jedi.name);
   });
});

2. Mongoose Promise-achtige objecten gebruiken

Moogose biedt ondersteuning voor belofte-achtige objecten. Het enige dat u hoeft te doen is iets dat enigszins lijkt op wat ik hierboven heb gedaan, maar deze keer roept u de exec op methode zonder terugbellen.

function getJedisPromise(name){
   var promise = Jedi.find({name:name}).exec();
   return promise;
}

Dan kun je het gebruiken door simpelweg het volgende te doen:

var promise = getJedisPromise('Luke');
promise.then(function(jedis){
   jedis.forEach(function(jedi){
      console.log(jedi.name);
   });
})

Zoals benadrukt in het commentaargedeelte van dit antwoord, zijn deze objecten in feite geen beloften en daar moet rekening mee worden gehouden (zie Vragen zijn geen beloften).

3. Mongoose-streams gebruiken

Ten slotte heeft Mongoose ook ondersteuning voor streams en streams zijn gebeurteniszenders. U kunt dus een stream krijgen en u vervolgens abonneren op 'data'- en 'error'-gebeurtenissen. Zoals dit:

function getjedisStream(name){
   var stream = Jedi.find({name:name}).stream();
   return stream;
}

Dan kunt u eenvoudig het volgende doen:

var stream = getJedisStream('Anakin');
stream.on('data', function(jedis){
   jedis.forEach(function(jedi){
      console.log(jedi.name);
   });
});
stream.on('error', function(error){
    console.log(error);
});

Bron, voor toekomstig gebruik.



  1. MongoDB $indexOfBytes

  2. Verkrijg de _id van het ingevoegde document in de Mongo-database in NodeJS

  3. Is er een aanbevolen waarde van COUNT voor de opdracht SCAN / HSCAN in REDIS?

  4. Java/MongoDB-zoekopdracht op datum