如何在Firestore中更新阵列项目

时间:2018-12-12 20:33:00

标签: firebase google-cloud-firestore

根据新的Firestore文档,我看到了2种新方法(arrayUnion,arrayRemove),用于处理嵌套在文档中的数组。这些方法使您可以添加和删除数组项,但是如何更新现有元素?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

如果arrayUnion或arrayRemove不满足您对数组修改的要求,则您必须阅读文档,修改内存中的数组值,然后使用新数组的全部内容更新数组字段。