Метеор удалить значение из объекта массива из коллекции - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь удалить значения массива из коллекции.Данные вставляются в таблицу «комментарии», когда любой пользователь добавляет комментарий, а ответы других пользователей вставляются в виде массива в поле «ответы», которое находится в таблице комментариев в виде массива.Если я удаляю родительский комментарий, то он работает нормально, когда пытается удалить любой ответный комментарий из массива, тогда он не работает.

Это условие, которое я использую. Это происходит в другом месте, но не удаляет значение из поля массива.

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});


    } 

}

1 Ответ

0 голосов
/ 28 февраля 2019

Метод remove() удаляет весь документ из вашей коллекции

Таким образом, удаление родительского комментария работает, поскольку весь документ удаляется

Но для удаления ответаВы не хотите удалять документ, только один элемент из массива в документе - поэтому вам нужен метод update()

В частности, вам нужно использовать $pull оператор для удаления элемента из массива

Таким образом, ваш ответ будет выглядеть примерно так (не зная, как выглядит ваша схема):

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

См. mongo docs о том, как работает $ pull

...