有什么方法可以从Firestore中的数组更新特定索引

时间:2019-01-02 09:56:54

标签: javascript reactjs firebase google-cloud-firestore

有什么方法可以从Firebase / firestore中的数组更新特定索引吗?

 export const editComment = (comment) => {
 return (dispatch, getState, { getFirebase, getFirestore }) => {
    const firestore = getFirestore();

    firestore.collection('topics').doc(comment.topicId).update({

     comments:  <--- this is array of objects


    }).then(() => {
      dispatch({ type: 'EDIT_COMMENT' })
    }).catch((error) => {
      dispatch({ type: 'EDIT_COMMENT_ERROR', error})
    })
  }
}

2 个答案:

答案 0 :(得分:1)

  

有什么方法可以从Firestore中的数组更新特定索引吗?

不,没有!这是不可能的,因为如果要执行更新,则需要知道该特定元素的索引。在谈论Cloud Firestore阵列时,您可能会想到不同的事情。

由于我们正在创建可在多用户环境中使用的应用程序,因此请尝试考虑如果用户想要编辑索引0处的值,而另一些用户想要删除索引0处的值会发生什么情况?同时,其他用户可能想在索引0处添加另一个项目。当然,您最终将获得截然不同的结果,为什么不这样做,甚至会使数组超出范围异常。因此,带有数组的Firestore操作有点不同。因此,您无法执行诸如在特定索引处插入,更新或删除操作。

如果这两种方法不能为您提供足够的帮助,则应获取整个文档,获取数组,对其进行修改并将其添加回数据库中。

答案 1 :(得分:1)

将数组变成它自己的单独文档,并在那里更新字段。那就是我所做的。为此,我不得不重新构建数据库。