如何解决猫鼬递归中间件
在为我的项目建模中间件时,我想出了在我的预挂钩中间件中调用 next
函数的概念。我有一个评论模式,它有一个相同类型引用的 Array[Id] 回复。最后一部分是实现删除功能。如果用户删除了根评论,那么它的所有子评论都应该被递归删除。所以我使用递归删除了 Id 的评论。
虽然许多 Stackoverflow 帖子都涵盖了这个主题,但我的示例与此不同。
CommentSchema.pre("deleteOne",function(next){
this.model.findOne({_id:this.getQuery()._id}).then(x=>{
if(x){
x.replies.map(y=>{
this.model.deleteOne({_id:y}).then(x=>{
console.log(x)
}).catch(x=>{
console.log("Error")
console.error(x)
})
return next()
})
}
})
return next()
})
我尝试在不同的尝试中在不同位置调用 next()
。因为 next 负责调用下一个中间件。调用地图内的 next()
会产生正确的输出,甚至在 {{1} 内条件给出了正确的输出。但是当我像上面的设置一样调用它两次时,只有第一个根被删除。但是文档说调用 next 不是操作。但是如果我删除最后一个 if
它会产生正确的输出。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。