MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Връщане на резултатите mongoose в заявката за намиране към променлива

Има няколко начина да постигнете това, което искате.

1. Използване на заявки за мангусти

В тази стратегия вашата функция връща заявка Mongoose, която по-късно можете да използвате, за да извикате метода exec и го използвайте, за да получите резултатите.

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

След това можете да го използвате просто като направите:

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 обекти

Moogose предоставя поддръжка за подобни на обещания обекти. Всичко, което трябва да направите, е нещо подобно на това, което направих по-горе, но този път извиквате exec метод без обратно извикване.

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

След това можете да го използвате, като просто направите:

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

Както е подчертано в секцията за коментари на този отговор, тези обекти всъщност не са обещания и това трябва да се вземе предвид (вижте Заявките не са обещания).

3. Използване на Mongoose Streamи

И накрая, Mongoose също има поддръжка за потоци и потоците са източник на събития. Така че можете да получите поток и след това да се абонирате за събития „данни“ и „грешки“. Като това:

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

След това можете просто да направите:

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);
});

Източник, за бъдещи справки.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. DbRef с Mongoose - mongoose-dbref или попълване?

  2. Правене на spring-data-mongodb като мулти-наемател

  3. Хибриден облак срещу пълен публичен облак - плюсове и минуси

  4. Съхраняване на йерархия на директории в хранилище на данни ключ-стойност

  5. Използване на функционалност Mongoose / MongoDB $addToSet върху масив от обекти