2014-07-22 13 views
8

Próbuję usunąć całą zawartość z mojej bazy danych Mongoose, ale nic nie działa.Mongoose Model.remove (oddzwanianie) nie usuwa niczego z mojej kolekcji

Próbowałem

# CoffeeScript 
MyModel.find().remove((err) -> console.log('purge callback')) 

# JavaScript 
MyModel.find().remove(function() { console.log('purge callback') }) 

And

# CoffeeScript 
MyModel.find().remove({}, (err) -> console.log('purge callback')) 

# JavaScript 
MyModel.find().remove({}, function() { console.log('purge callback') }) 

Nawet usunięcie krok .find() lub dodanie .exec() moja zwrotna nigdy nie pokazuje i moje dane są nadal tutaj.

Jestem pewien, że mój model i połączenia są w porządku:

  • widzę połączenia w dzienniku Mongo za
  • mogę dodać dokumenty manipulując ten sam model w innym

Powiązane : How do I remove documents using Node.js Mongoose?

EDYTOWANIE

Mój problem spowodowany był błędem składni, który nie został wyświetlony. Wybrana odpowiedź działa, podobnie jak powyższy kod. Moderatorzy mogą usunąć moje pytanie, jeśli wydaje się to konieczne.

Odpowiedz

20

To nie "query" obiekt zwrócony przez Mangusta, jedyny prawidłowy sposób tutaj jest .remove():

MyModel.remove(function(err,removed) { 

    // where removed is the count of removed documents 
}); 

który jest taki sam jak:

MyModel.remove({}, function(err,removed) { 

}); 

Ponadto, jak ty ustalania żadnych dokumentów są usunięte? Prawdopodobnie szuka w niewłaściwej kolekcji. Mongoose pluralizes nazwę kolekcji domyślnie, chyba że wyraźnie określić nazwę kolekcji, jak w:

mongoose.Model("MyModel", myModelSchema, "mymodel") 

Bez tego trzeciego argumentu lub inaczej określając na schemacie nazwa kolekcji domniemanych być „mymodels”. Sprawdź, czy masz prawidłową kolekcję, a także poprawne połączenie z bazą danych, gdy spodziewasz się, że dokumenty zostaną usunięte.

+1

Tak jak powiedziałem, próbowałem tego również, ale to też nie działa. Ponadto przykłady dokumentacji Mongoose nie zgadzają się z tobą http://mongoosejs.com/docs/api.html#query_Query-remove. Mimo wszystko, dziękuję za twoją pomoc. – AsTeR

+0

@AsTeR działa dla wszystkich pozostałych. Nie pokazujesz składni jak pokazano powyżej i dlatego musisz robić coś innego. –

+0

Powiedziałem, że usunąłem krok '.find()'. Ale masz rację, stwierdzenie, że oczywiste jest ważne. Patrzę na moją kolekcję za pośrednictwem MongoHub i klienta linii poleceń. Zauważyłem dodaną sztuczkę "s" ... – AsTeR

13

Funkcja .Wykręcić działa tylko w modelu dokumentu Mongoose instance.This jest przykładem, aby usunąć jeden model:

Model.findOne({ field : 'toto'}, function (err, model) { 
    if (err) { 
     return; 
    } 
    model.remove(function (err) { 
     // if no error, your model is removed 
    }); 
}); 

Ale, jeśli chcesz usunąć elementy z konkretnego zapytania, należy użyć funkcji remove jak funkcja find:

Model.remove({ title : 'toto' }, function (err) { 
    // if no error, your models are removed 
}); 
+0

Jeśli nie znaleziono modelu, zostanie zgłoszony błąd i awaria – Mick

Powiązane problemy