gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 03:46:47 25 4
gpt4 key购买 nike

我有一个应用程序,我在其中管理 categoriessubcategories .
所以每次我删除一个 category , 我有一个 mongoose 中间件,可以删除所有 subcategories谁属于它。

schema.post('findOneAndDelete',
(category: CategoryDocument) => subcategoryModel.deleteMany({ category: category.id }))
当我只删除一个 category 时效果很好,当我删除多个时会发生什么?
我尝试注册 deleteMany中间件像这样:
schema.post('deleteMany',
(deletedQueryResult: any) => {})
但是 deleteMany中间件只是向我的回调发送查询结果(所花费的时间、已删除文档的数量和一些内部 mongoose/mongodb 属性)。
无论如何,我可以在 Mongoose 中间件中获取已删除的文档或它们的 id 吗?
如果不是,我在这里的其他选择是什么?

最佳答案

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

  • n – 匹配文档的数量
  • ok1如果操作成功,否则 0
  • deletedCount – 已删除文档的数量

  • 这与 mongodb db.collection.deleteMany 的行为相同方法。
    我建议你添加一个 static method到您的模型:
    // 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)...

    关于node.js - 如何从 Mongoose 的 DeleteMany 中间件中获取已删除的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65048343/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com