Two*_*ses 5 mongoose mongodb node.js
我有一个应用程序,在其中管理categories
和subcategories
。
所以每次我删除一个 时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 吗?
如果不是,我还有什么其他选择?
这deleteMany
方法返回一个具有三个字段的对象:
n
\xe2\x80\x93 匹配文档数ok
\xe2\x80\x931
如果操作成功,否则为 0deletedCount
\xe2\x80\x93 已删除文档数这与 mongodb 的行为相同db.collection.deleteMany
。
我建议你添加一个静态方法我建议您向模型
\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
归档时间: |
|
查看次数: |
3414 次 |
最近记录: |