【发布时间】:2019-05-14 00:33:23
【问题描述】:
根据新的 Firestore 文档,我看到 2 个新方法(arrayUnion、arrayRemove)用于处理嵌套在文档中的数组。这些方法允许您添加和删除数组项,但我将如何更新现有元素?
【问题讨论】:
-
很确定没有更新内置功能,这种情况你需要删除、编辑和重新添加。
标签: firebase google-cloud-firestore
根据新的 Firestore 文档,我看到 2 个新方法(arrayUnion、arrayRemove)用于处理嵌套在文档中的数组。这些方法允许您添加和删除数组项,但我将如何更新现有元素?
【问题讨论】:
标签: firebase google-cloud-firestore
没有更新方法,因为如果你想执行更新,你需要知道那个特定元素的索引。当谈到 Cloud Firestore 阵列时,事情可能与您想象的不同。
因为我们正在创建可在多用户环境中使用的应用程序,所以请尝试考虑如果用户想要编辑索引 0 处的值,而其他用户想要删除索引 0 处的值以及同时其他一些用户可能想要在索引 0 处添加另一个项目。当然,您最终会得到非常不同的结果,为什么不呢,甚至得到一个ArrayIndexOutOfBoundsException。所以带有数组的 Firestore 操作有点不同。因此,您无法在特定索引处执行插入、更新或删除等操作。
正如 Doug 在他的回答中提到的,如果这两种方法对您的帮助不够,您应该获取整个文档,获取数组,修改它并将其添加回数据库。
【讨论】:
如果 arrayUnion 或 arrayRemove 不满足您的数组修改,则必须读取文档,修改内存中的数组值,然后使用新数组整体更新数组字段。
【讨论】: