簡體   English   中英

強制 Firestore 數組與已經是數組一部分的值合並

[英]Force the Firestore array to merge with the value that's already a part of the array

有一種方法arrayUnion()可用於向現有數組添加其他元素。 然而,當添加數組中已經存在的值時,它不會合並,它只會保留一個元素而不是兩個。

Example:
Existing array = [2]
ArrayUnion([2])...
Resultant array [2]


Example 2;
Existing array = [3];
ArrayUnion([2])...
Resultant Array = [3, 2];

我怎樣才能讓它工作,以便第一個示例中的結果數組為 [2, 2]?

arrayUnion的文檔中

返回一個可以與set()update()一起使用的特殊值,它告訴服務器將給定元素與服務器上已存在的任何數組值合並。 數組中尚不存在的每個指定元素都將添加到末尾。 如果被修改的字段還不是一個數組,它將被一個完全包含指定元素的數組覆蓋。

arrayUnion運算符確保每個唯一值在數組中最多存在一次。 無法使用arrayUnion添加重復值。

如果要添加重復值,則必須讀取整個數組,在客戶端修改它,然后寫回。

我找到了解決方法,因為我遇到了同樣的問題。 我不知道從長遠來看這會翻譯成什么樣,但我所做的是在數字末尾添加一個隨機小數。

我能夠用相同的整數值更新數組

FieldValue.arrayUnion(`${value}.${rand}`)

我知道這可能不是一個合適的解決方案,但希望從我的應用程序查詢數據時這不是什么大問題。 我會省略那里的小數點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM