Mongoose 中间件“删除”不起作用

问题描述 投票:0回答:1

我正在使用猫鼬。我有两个模型:用户和奖杯。当我删除用户时,我想删除其所有奖杯。我正在关注猫鼬库,我有类似的代码,但它不起作用:

userSchema.pre('remove', async function (next) {
  const user = this
  await Trophies.deleteMany({ owner: user._id })
  next()
})

你能帮忙吗?

我尝试了中间件的不同名称,“delete”,“deleteMany”,但它对它们都不起作用。

mongodb express mongoose middleware mongoose-schema
1个回答
0
投票

Model.remove
方法在 Mongoose V7 中已被删除,因此如果您使用 >V6,那么您的
pre
钩子将不会执行任何操作,因为在文档删除期间永远不会调用
remove()

如果您使用

User.findByIdAndDelete
User.findOneAndDelete
,那么您可以在
userSchema
上注册
findOneAndDelete
中间件上的钩子:

userSchema.pre('findOneAndDelete', async function () {
  await Trophies.deleteMany({ owner: this._id })
});
© www.soinside.com 2019 - 2024. All rights reserved.