javascript - 删除多个文档并将它们传递给回调

标签 javascript node.js mongodb express mongoose

我正在尝试找到删除多个文档的正确方法,以便以后可以访问它们。

要通过一个 文档实现这一点,您可以使用findByIdAndRemovefindOneAndRemove两者都将找到的文档传递给回调。但是我没有找到任何方法来完成多个文档。所以这是我目前的解决方案:

Model.find({}, function(err, docs){

  // do some stuff with docs
  // like removing attached uploaded files (avatars, pictures, ...)

  Model.remove({}, function(err, docs){

    // here docs only return the deleted documents' count
    // i'm unable to perform any kind of operations on docs

  })
})

我想知道是否有更好的方法来做到这一点?谢谢!

最佳答案

在这种情况下,我使用异步和下划线模块。首先,我为异步创建任务数组,然后并行执行它们。例如 var async = require('async'); var _ = require('下划线');

Model.find({}, function(err, docs){
  // do something
  var tasks = [];
  _.each(docs, function(doc){
    tasks.push(function(callback){
      doc.remove(function(err, removedItem){
        callback(err, removedItem);
      });
    });  
  });
  async.parallel(tasks, function(err, results){
    // results now is an array of removedItems
  });
});

参见 https://github.com/caolan/async#parallelhttp://mongoosejs.com/docs/api.html#model_Model-remove

附注你可以用原生的 Array.prototype.forEach 替换下划线。

关于javascript - 删除多个文档并将它们传递给回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22113989/

相关文章:

javascript - xPages 与 FTSearch 内存泄漏

java - 如何在特定端口上用 Java 接收服务器 POST

javascript - jquery mouseenter 不适用于特定 div

javascript - 检测滚动条何时到达 div 的顶部?

javascript - 通过鼠标移动实现页面倾斜和缩放

mongodb - MongoDB 中带有条件的多个 Group By

Mongodb 日期与时间无法正常工作

node.js - heroku保留文件/文件夹,同时将新版本的nodejs应用程序重新部署到heroku

node.js - node.js 中是否有 dojo.hitch 等价物

javascript - Mongoose动态mongodb集合名称