2017-11-23 3 views
0

Ich versuche, Kommentare als Dokument und nicht als Modell zu löschen, da ich später die Pre-Hook Remove-Methode verwenden möchte.Mongoose - Entfernen Sie alle gefundenen Dokumente mit einem Versprechen.

Der folgende Befehl findet mehrere Dokumente, die die Abfrage erfüllen und versucht, jeden Kommentar einzeln zu löschen. Nachdem alle entfernt wurden, wird die next() -Funktion aufgerufen, wenn während der Phase ein Fehler auftritt, der sie abfangen soll.

Comment.find({'moment': this._id}) 
    .then(((comments) => Promise.each(comments, (comment) => comment.remove())) 
    .then(next()) 
    .catch(next())); 

aber das gibt mir einen Fehler und löschen Sie nicht den Kommentar

"TypeError: (intermediate value).then is not a function"

+0

nicht sicher, ob im Zusammenhang mit, aber afaik Sie exec auf Fund nennen sollten eine volle Versprechen zu bekommen. 'comment.find ({...}) exec()'. http://mongoosejs.com/docs/promises.html – Sergeon

+0

ich bekomme Promise.each ist kein funktin? – KHAN

Antwort

0

ich beschlossen native Versprechungen zu verwenden und ich könnte Dies erreicht die Promise.all

Comment.find({'moment': this._id}) 
    .then((comments) => { 
     Promise.all(comments.forEach((comment) => comment.remove())) 
      .then(next()); 
    }); 
0

versuchen, diese

.then(() => next()) 
    .catch(() => next())); 

Oder diese (mit Fehlerbehandlung)

.then(() => next()) 
    .catch(next); 
Verwandte Themen