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

Mongoose Znajdź i usuń

Jak zauważyłeś, użycie następujących nie spowoduje zwrócenia dokumentu:

Data.find(query).remove().exec(function(err, data) {
  // data will equal the number of docs removed, not the document itself
}

W związku z tym nie możesz zapisać dokumentu w ActionCtrl stosując to podejście.

Możesz osiągnąć ten sam wynik, używając swojego oryginalnego podejścia lub użyj jakiejś formy iteracji. Biblioteka przepływu sterowania, taka jak async może się przydać do obsługi połączeń asynchronicznych. Nie zmniejszy to kodu, ale zmniejszy liczbę zapytań. Zobacz przykład:

Data.find(query, function(err, data) {
  async.each(data, function(dataItem, callback) {
    dataItem.remove(function(err, result) {
      ActionCtrl.saveRemove(result, callback);
    });
  });
});

Ta odpowiedź zakłada, że ​​ActionCtrl.saveRemove() implementacja może przyjąć pojedynczy dokument jako parametr i może wykonać wywołanie zwrotne z async.each pętla. async.each wymaga wywołania zwrotnego do uruchomienia bez argumentów na końcu każdej iteracji, więc najlepiej byłoby uruchomić to na końcu .saveRemove()

Zauważ, że remove metoda na pojedynczym dokumencie faktycznie zwróci dokument, który został usunięty.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Przeszukaj wszystkie wielokąty zawierające szereg punktów w mongodb

  2. MongoDB — Usuń bazę danych

  3. Pierwsze kroki z Node.js, angular.js i MongoDB, modelowanie relacji i inne wskazówki dotyczące rozwoju

  4. Uzyskaj całkowitą liczbę dokumentów w MongoDB podczas korzystania z limitu

  5. Pobieranie pliku nie działa z nodejs gridfs