MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Zwróć wyniki mangusty w zapytaniu wyszukiwania do zmiennej

Jest kilka sposobów na osiągnięcie tego, czego chcesz.

1. Korzystanie z zapytań Mongoose

W tej strategii Twoja funkcja zwraca zapytanie Mongoose, którego możesz później użyć do wywołania metody exec i użyj go, aby uzyskać wyniki.

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

Następnie możesz go użyć po prostu wykonując:

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. Korzystanie z obiektów podobnych do obietnicy Mongoose

Moogose zapewnia obsługę obiektów podobnych do obietnicy. Wszystko, co musisz zrobić, to coś podobnego do tego, co zrobiłem powyżej, ale tym razem wywołujesz exec metoda bez wywołania zwrotnego.

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

Następnie możesz go użyć, po prostu wykonując:

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

Jak podkreślono w sekcji komentarzy do tej odpowiedzi, obiekty te w rzeczywistości nie są obietnicami i należy to wziąć pod uwagę (patrz Zapytania nie są obietnicami).

3. Korzystanie ze strumieni Mongoose

Wreszcie, Mongoose obsługuje również strumienie, a strumienie są emiterami zdarzeń. Możesz więc uzyskać strumień, a następnie zasubskrybować zdarzenia „dane” i „błędy”. Tak:

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

Następnie możesz po prostu zrobić:

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

Źródło, do wykorzystania w przyszłości.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kolejność dokumentów zwrotnych Mongodb find

  2. Czy są jakieś powody, dla których powinienem/nie powinienem używać ObjectId w moim adresie URL RESTful

  3. Usuń wszystkie pola, które są puste

  4. 4 sposoby na aktualizację dokumentu w MongoDB

  5. Wyszukiwanie w mongo db przy użyciu mongoose regex vs. text