微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

猫鼬递归中间件

如何解决猫鼬递归中间件

在为我的项目建模中间件时,我想出了在我的预挂钩中间件中调用 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 它会产生正确的输出

  1. 我错过了什么?
  2. 我是否应该在 map 内部调用 next(),因为它为 map 函数中的每个 next 触发 next 函数
  3. deleteOne解决这些问题吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。