arrays - Google Firebase 的 arrayUnion() 是否可靠地将数据附加到数组的末尾?
问题描述
我在 StackOverflow 或 Google 的文档中找不到确认信息:
https://firebase.google.com/docs/firestore/manage-data/add-data#update_elements_in_an_array
如果我使用arrayUnion()
添加到 Firebase 数组,Firebase 对排序有什么作用?它是否附加到末尾?如果元素已经存在,比如说在数组 [a, b, EXISTS, c] 的中间,那么arrayUnion()
是否将其留在原处?
我需要维护一个按Person
最后一次聊天排序的联系人列表,本质上是一个隐含的年表。每次收到新消息时,可能都需要重新排序列表。我想知道最好的方法是对最近的聊天进行洗牌arrayRemove()
,还是检查数组是否需要更改并重建整个数组并使用事务。arrayUnion()
Person
我的联系人数组可能同时发生突变,因此 Firebase 可以最快处理的方法很有趣。
解决方案
正如这里提到的,已经在数组中的元素不会被添加,而只会在数组末尾追加新元素。
假设您有数组[A,B,C]
并使用arrayUnion
with[A.D,Z]
结果数组将是:[A,B,C,D,Z]
为了保持提到的顺序arrayRemove()
和arrayUnion()
工作,但是为了性能,请记住,这只有在一次添加和删除几个元素时才有效。
推荐阅读
- mysql - 如何将数据从另一个已生成列的表中复制到表中
- javascript - 为树形图格式化 JSON 数据
- python - 如何获取 GeoDataFrame 中多边形内的所有点?
- javascript - vendor.js:55639 错误错误:未捕获(承诺):错误:无法匹配任何路由。URL 段:'create/path1'
- laravel - belongsToMany 的逆
- javascript - 使用 JavaScript 模糊图像
- php - 更新数组中的值会使用最后插入的值 PHP 更新所有值
- apache-kafka-streams - Spring Cloud Stream 应用程序中的 timestampExtractorBeanName 设置不会覆盖默认值
- image - 在 docker 容器中找不到已安装的 pip 包
- elixir - 有效使用 genstage Elixir