Node.js 如何从Mongoose中的DeleteMany中间件获取已删除的文档?

Node.js 如何从Mongoose中的DeleteMany中间件获取已删除的文档?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我有一个应用程序,我在其中管理类别和子类别 因此,每次我删除一个类别,我都有一个mongoose中间件,它会删除属于它的所有子类别 schema.post('findOneAndDelete', (category: CategoryDocument) => subcategoryModel.deleteMany({ category: category.id })) 如果我只删除一个类别,效果很好,那么当我删除多个类别时会发生什么情况? 我尝试注册一个deletemy中间件,如

我有一个应用程序,我在其中管理
类别
子类别

因此,每次我删除一个
类别
,我都有一个mongoose中间件,它会删除属于它的所有
子类别

schema.post('findOneAndDelete',
    (category: CategoryDocument) => subcategoryModel.deleteMany({ category: category.id }))
如果我只删除一个
类别
,效果很好,那么当我删除多个类别时会发生什么情况?
我尝试注册一个
deletemy
中间件,如下所示:

schema.post('deleteMany',
            (deletedQueryResult: any) => {})
但是
deleteMany
中间件只向我的回调发送查询结果(所用时间、删除文档的数量和一些内部mongoose/mongodb属性)

我是否可以在mongoose中间件中获取已删除的文档或其ID?

如果没有,我的其他选项是什么?

方法返回一个包含三个字段的对象:

  • n
    –匹配文档的数量
  • ok
    1
    如果操作成功,否则0
  • deletedCount
    –已删除文档的数量
这与mongodb方法的行为相同

我建议您在模型中添加:

// Assign a function to the "statics" object of our schema
categorySchema.statics.deleteManyWithSubs = async function(catIds) {
  const deleteQuery = /*your delete query using catIDs*/
  const delRes = await this.deleteMany(deleteQuery);
  catIds.forEach(id => {
     await subcategoryModel.deleteMany({ category: id })
  });
  return true;
};

// Usage
categoryModel.deleteManyWithSubs(ids)...