【问题标题】:Meteor remove value from array object from collection流星从集合中的数组对象中删除值
【发布时间】:2019-07-22 08:02:05
【问题描述】:

我正在尝试从集合中删除数组值。当任何用户添加评论并且其他用户回复作为数组插入到 cmets 表中作为数组的“回复”字段中时,数据将插入到“cmets”表中。如果我删除了父评论,那么在尝试从数组中删除任何回复的评论时它工作正常,那么它就不起作用了。

这是我正在使用的条件。它会进入 else 但不会从数组字段中删除值。

deleteComment(comment) {

    let commentId = comment.commentId; //
    let replyComntID = comment.repID;
    if(replyComntID == 0)
    {   
      Comments.remove({_id: commentId});

    }else{

        Comments.remove({_id: comment.commentId, "replies._id":comment.replyComntID});


    } 

}

【问题讨论】:

    标签: mongodb meteor


    【解决方案1】:

    remove()method 从您的收藏中删除整个文档

    所以删除父评论是可行的,因为整个文档都被删除了

    但要删除回复,您不想删除文档,只需从文档中的数组中删除一项 - 所以您需要 update() method

    具体你需要使用$pulloperator从数组中删除项目

    所以你的答案看起来像这样(不知道你的架构是什么样的):

    Comments.update({ _id: commentId }, { $pull: { replies: { _id: replyComntID } } })

    查看mongo docs 了解 $pull 的工作原理

    【讨论】:

    • @user3714488 在这种情况下,我认为您将不得不发布您的集合架构(或只是一个示例文档) - 从您提供的信息中很难知道究竟是什么问题跨度>
    • 它在我的情况下工作我已经改变了这个 Comments.update({ _id: commentId }, { $pull: { replies : { _id: replyComntID }}})
    猜你喜欢
    • 2015-01-10
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 2016-01-28
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多