具有Flutter的FieldValue arrayUnion和Cloud FireStore

Hit*_*iya 5 dart firebase flutter google-cloud-firestore

我有这样的云火存储对象

"TestCollection" : ["Test1","Test"]
Run Code Online (Sandbox Code Playgroud)

现在,我想用FieldValue.arrayUnion更新此数组,因为如果元素相同,那么我就不想做任何事情,但是如果不是,那么我想添加元素

docRef.updateData({"TestCollection":FieldValue.arrayUnion(["test"])})
Run Code Online (Sandbox Code Playgroud)

但是此语句给出了错误,例如对象不能具有嵌套数组

任何人都可以请帮助或提供相同的示例来查找语法吗?

Pan*_*iss 7

新的 FlutterFire 更新 2021

在最新的 FlutterFire 更新中,API 进行了大量更新,但值得庆幸的是,它并没有针对这个问题做出太大改变。我正在谈论 Firebase for Flutter 的最新插件,特别是与新的firebase_core ^0.7.0兼容的每个插件。所以代码看起来很相似:

FirebaseFirestore.instance
.collection("YourCollection")
.doc("YourDocument")
.update({
      "anArray": FieldValue.arrayUnion(["data", "to", "append"])
    });
Run Code Online (Sandbox Code Playgroud)


Jee*_*ane 6

我找到了解决方案。尝试这个:

 Firestore.instance
.collection('YourCollection')
.document('YourDocument')
.updateData({'array':FieldValue.arrayUnion(['data1','data2','data3'])});
Run Code Online (Sandbox Code Playgroud)

如果仍然无法正常运行,请尝试更新您的Firebase。

首先打开一个提取到您的flutter项目的终端,然后:

cd ios
pod update Firebase
Run Code Online (Sandbox Code Playgroud)

此解决方案仅适用于mac用户。