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

Two*_*ses 5 mongoose mongodb node.js

我有一个应用程序,在其中管理categoriessubcategories
所以每次我删除一个 时category,我都会有一个 mongoose 中间件来删除所有subcategories属于它的人。

schema.post('findOneAndDelete',
    (category: CategoryDocument) => subcategoryModel.deleteMany({ category: category.id }))
Run Code Online (Sandbox Code Playgroud)

当我只删除一个时效果很好category,当我删除多个时会发生什么?
我尝试注册一个deleteMany中间件,如下所示:

schema.post('deleteMany',
            (deletedQueryResult: any) => {})
Run Code Online (Sandbox Code Playgroud)

deleteMany中间件只是将查询结果发送到我的回调(所花费的时间、已删除文档的数量和一些内部 mongoose/mongodb 属性)。

无论如何,我可以在猫鼬中间件中获取已删除的文档或其 ID 吗?
如果不是,我还有什么其他选择?

lif*_*foo 1

deleteMany方法返回一个具有三个字段的对象:

\n
    \n
  • n\xe2\x80\x93 匹配文档数
  • \n
  • ok\xe2\x80\x931如果操作成功,否则为 0
  • \n
  • deletedCount\xe2\x80\x93 已删除文档数
  • \n
\n

这与 mongodb 的行为相同db.collection.deleteMany

\n

我建议你添加一个静态方法我建议您向模型

\n
// Assign a function to the "statics" object of our schema\ncategorySchema.statics.deleteManyWithSubs = async function(catIds) {\n  const deleteQuery = /*your delete query using catIDs*/\n  const delRes = await this.deleteMany(deleteQuery);\n  catIds.forEach(id => {\n     await subcategoryModel.deleteMany({ category: id })\n  });\n  return true;\n};\n\n// Usage\ncategoryModel.deleteManyWithSubs(ids)...\n
Run Code Online (Sandbox Code Playgroud)\n