繁体   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