首页 > 解决方案 > 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 可以最快处理的方法很有趣。

标签: arraysfirebasegoogle-cloud-firestore

解决方案


正如这里提到的,已经在数组中的元素不会被添加,而只会在数组末尾追加新元素。

假设您有数组[A,B,C]并使用arrayUnionwith[A.D,Z]
结果数组将是:[A,B,C,D,Z]

为了保持提到的顺序arrayRemove()arrayUnion()工作,但是为了性能,请记住,这只有在一次添加和删除几个元素时才有效。


推荐阅读