arrays - Firestore 在更新数组时不存储两个相同的值

标签 arrays firebase flutter google-cloud-firestore

使用 flutter,当更新具有 2 个或多个连续相同值的数组时,firestore 只会添加一个。

示例:

void updateValue() {
var now = [new DateTime.now()];
int pain =5;
 Firestore.instance.collection('Patient').document('bC2ML7LaQ1fWGOl37ZUq').collection('Symptom').document('2H6e99Bvrz6h0HBzgnyg')
            .updateData({ 'nauseaLevel' : FieldValue.arrayUnion([pain]), 'nauseaTime':FieldValue.arrayUnion(now)});
          }

当执行该函数2次时,firestore中的数组“nauseaLevel”只会添加一个“pain”值而忽略第二个。

数组 nauseaTime 按预期工作,因为值不同。

最佳答案

根据有关 updating elements in an array 的官方文档:

arrayUnion() adds elements to an array but only elements not already present.

因此,您无法使用 arrayUnion() 函数在 Cloud Firestore 的数组中添加重复元素。

然而,为了避免误解,您可以在数组中添加重复元素,但前提是您读取整个数组客户端,进行添加(包括所有重复项),然后将其写回数据库。

关于arrays - Firestore 在更新数组时不存储两个相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56110491/

相关文章:

C#:string[] 到定界字符串。有单线吗?

android - FCM(firebase 云消息传递) token 是用于一台设备还是一个帐户?

flutter - 在 FutureBuilder 中使用 GetX 构建列表 - UI 未更新

android - flutter/Dart ,开关 : Another exception was thrown: A RenderFlex overflowed by 99640 pixels on the right

android - Flutter 如何在没有任何用户交互的情况下从一个页面导航到另一个页面

javascript - 如何根据信息表绘制动态折线图?

python将数组拆分为同等级别的子数组

ios - 如何在 objective-c 中的头文件中访问定义的常量数组?

ios - 由于未捕获的异常 'NSInternalInconsistencyException' 而终止应用程序,原因 : 'FCM error: cannot have last checkin timestamp in future'

android - 离线匿名使用 Firebase 进行身份验证