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)...