MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mangusto Localizar e remover


Como você observou, usar o seguinte não retornará o documento:
Data.find(query).remove().exec(function(err, data) {
  // data will equal the number of docs removed, not the document itself
}

Como tal, você não pode salvar o documento em ActionCtrl usando esta abordagem.

Você pode obter o mesmo resultado usando sua abordagem original ou usar alguma forma de iteração. Uma biblioteca de fluxo de controle como async pode ser útil para lidar com as chamadas assíncronas. Isso não reduzirá seu código, mas reduzirá as consultas. Consultar exemplo:
Data.find(query, function(err, data) {
  async.each(data, function(dataItem, callback) {
    dataItem.remove(function(err, result) {
      ActionCtrl.saveRemove(result, callback);
    });
  });
});

Esta resposta assume que o ActionCtrl.saveRemove() implementação pode ter um documento individual como parâmetro e pode executar o retorno de chamada do async.each ciclo. async.each requer que um retorno de chamada seja executado sem argumentos no final de cada iteração, então você idealmente executaria isso no final de .saveRemove()

Observe que remove método em um documento individual retornará o documento que foi removido.