Comme vous l'avez noté, l'utilisation des éléments suivants ne renverra pas le document :
Data.find(query).remove().exec(function(err, data) {
// data will equal the number of docs removed, not the document itself
}
En tant que tel, vous ne pouvez pas enregistrer le document dans ActionCtrl
en utilisant cette approche.
Vous pouvez obtenir le même résultat en utilisant votre approche originale ou en utilisant une certaine forme d'itération. Une bibliothèque de flux de contrôle comme async peut être utile pour gérer les appels asynchrones. Cela ne réduira pas votre code, mais réduira les requêtes. Voir exemple :
Data.find(query, function(err, data) {
async.each(data, function(dataItem, callback) {
dataItem.remove(function(err, result) {
ActionCtrl.saveRemove(result, callback);
});
});
});
Cette réponse suppose que le ActionCtrl.saveRemove()
l'implémentation peut prendre un document individuel comme paramètre et peut exécuter le rappel à partir de async.each
boucle. async.each
nécessite qu'un rappel soit exécuté sans arguments à la fin de chaque itération, donc vous devriez idéalement l'exécuter à la fin de .saveRemove()
Notez que le remove
méthode sur un document individuel renverra en fait le document qui a été supprimé.