sql >> Base de Datos >  >> NoSQL >> MongoDB

Mangosta Buscar y Eliminar

Como ha notado, usar lo siguiente no devolverá el documento:

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

Como tal, no puede guardar el documento en ActionCtrl utilizando este enfoque.

Puede lograr el mismo resultado utilizando su enfoque original o utilizar algún tipo de iteración. Una biblioteca de flujo de control como async podría ser útil para manejar las llamadas asíncronas. No reducirá su código, pero reducirá las consultas. Ver ejemplo:

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

Esta respuesta asume que ActionCtrl.saveRemove() la implementación puede tomar un documento individual como parámetro y puede ejecutar la devolución de llamada desde async.each círculo. async.each requiere que se ejecute una devolución de llamada sin argumentos al final de cada iteración, por lo que lo ideal sería ejecutar esto al final de .saveRemove()

Tenga en cuenta que remove en un documento individual devolverá el documento que se eliminó.