问题描述
在为我的项目建模中间件时,我想出了在我的预挂钩中间件中调用 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 (将#修改为@)