我有这样的云火存储对象
"TestCollection" : ["Test1","Test"]
现在我想使用FieldValue.arrayUnion更新此数组 因为如果元素相同,那么我不想做任何事情,但是如果不是,那么我想添加元素
docRef.updateData({"TestCollection":FieldValue.arrayUnion(["test"])})
但是此语句给出了错误,例如对象不能具有嵌套数组
任何人都可以请帮助或提供相同的示例来查找语法吗?
答案 0 :(得分:3)
我找到了解决方案。 试试这个:
number
如果仍然无法正常运行,请尝试更新Firebase。
首先打开一个提取到您的flutter项目的终端,然后:
Firestore.instance
.collection('YourCollection')
.document('YourDocument')
.updateData({'array':FieldValue.arrayUnion(['data1','data2','data3'])});
此解决方案仅适用于mac用户。
答案 1 :(得分:2)
如果有对象列表,则为另一种方式
Future<void> updateUserNewGroup(List<Group> data , String id) {
List<Map> list=new List();
if(data !=null && data.isNotEmpty){
data.forEach((grp){
list.add(grp.toJson());
});
}
return ref.document(id).updateData({"groups": FieldValue.arrayUnion(list)}) ;
}
答案 2 :(得分:2)
2021 年 FlutterFire 新更新
在最新的 FlutterFire 更新中,API 进行了大量更新,但幸运的是,这个问题并没有太大变化。我说的是 Firebase for Flutter 的最新插件,特别是与新的 firebase_core ^0.7.0 兼容的每个插件。 所以代码看起来很相似:
FirebaseFirestore.instance
.collection("YourCollection")
.doc("YourDocument")
.update({
"anArray": FieldValue.arrayUnion(["data", "to", "append"])
});
答案 3 :(得分:1)
按照现有答案进行操作,如果该字段不存在,则可以使用“设置并合并”。这样可以避免检查该字段是否存在。
Firestore.instance
.collection('YourCollection')
.document('YourDocument')
.setData({
'array':FieldValue.arrayUnion(['data1','data2','data3'])
}, merge: true);
答案 4 :(得分:1)
这是我使用的代码,它就像一个魅力!
_firestore
.collection('x')
.document('xxxxxxxxxx')
.updateData({
'comments': FieldValue.arrayUnion([
{'comment': "comment goes here", 'sender': "xxxxxxxx@gmail.com"}
])
});