Как я могу обновить вложенный массив, хранящийся в базе данных firebase, в javascript? - PullRequest
0 голосов
/ 18 июня 2020

Я хочу обновить массив commentText, но когда я кодирую такой код, он не работает

вот мой код

firebase.database().ref('posts').orderByChild("creatorId").equalTo(creatorId).on("child_added", (data) => {
   data.ref.update({
        comments: data.val().comments.commentText.concat(this.input)
    })
}

см. Изображение здесь

1 Ответ

0 голосов
/ 18 июня 2020

Свойство creatorId находится под узлом comments, поэтому вам нужно заказать / отфильтровать comments/creatorId:

firebase.database().ref('posts').orderByChild("comments/creatorId").equalTo(creatorId).on("child_added", (data) => {
   data.ref.update({
        comments: data.val().comments.commentText.concat(this.input)
    })
})

Старый ответ ниже, так как код все еще может быть полезно.

Когда вы выполняете запрос к базе данных Firebase, потенциально может быть несколько результатов. Итак, снимок содержит список этих результатов. Даже если есть только один результат, снимок будет содержать список из одного результата.

Таким образом, ваш код должен обрабатывать этот список, даже если есть только один результат:

firebase.database().ref('posts').orderByChild("creatorId").equalTo(creatorId).once("value", (snapshot) => {
   snapshot.forEach((data) => {
      data.ref.update({
         comments: data.val().comments.commentText.concat(this.input)
      })
   })
}

...