我正在使用猫鼬。我有两个模型:用户和奖杯。当我删除用户时,我想删除其所有奖杯。我正在关注猫鼬库,我有类似的代码,但它不起作用:
userSchema.pre('remove', async function (next) {
const user = this
await Trophies.deleteMany({ owner: user._id })
next()
})
你能帮忙吗?
我尝试了中间件的不同名称,“delete”,“deleteMany”,但它对它们都不起作用。
Model.remove
方法在 Mongoose V7 中已被删除,因此如果您使用 >V6,那么您的 pre
钩子将不会执行任何操作,因为在文档删除期间永远不会调用 remove()
。
如果您使用
User.findByIdAndDelete
或 User.findOneAndDelete
,那么您可以在 userSchema
上注册 findOneAndDelete
中间件上的钩子:
userSchema.pre('findOneAndDelete', async function () {
await Trophies.deleteMany({ owner: this._id })
});