如何在JavaScript中更新存储在Firebase数据库中的嵌套数组?

时间:2020-06-18 18:50:36

标签: javascript firebase

我想更新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 :(得分:0)

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