【问题标题】:FieldValue arrayUnion and Cloud FireStore with Flutter使用 Flutter 的 FieldValue arrayUnion 和 Cloud FireStore
【发布时间】:2019-02-19 07:31:14
【问题描述】:

我有这样的云火存储对象

"TestCollection" : ["Test1","Test"]

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

docRef.updateData({"TestCollection":FieldValue.arrayUnion(["test"])})

但是这个语句给出了对象不能有嵌套数组的错误

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

【问题讨论】:

  • 我也有同样的问题...

标签: firebase dart flutter google-cloud-firestore


【解决方案1】:

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"])
    });

【讨论】:

    【解决方案2】:

    这是我使用的代码,它就像一个魅力!

                    _firestore
                    .collection('x')
                    .document('xxxxxxxxxx')
                    .updateData({
                  'comments': FieldValue.arrayUnion([
           {'comment': "comment goes here", 'sender': "xxxxxxxx@gmail.com"}
                  ])
                });
    

    【讨论】:

      【解决方案3】:

      跟进现有答案,如果该字段不存在,您可以使用集合和合并。这样可以避免您检查该字段是否存在。

      Firestore.instance
        .collection('YourCollection')
        .document('YourDocument')
        .setData({
          'array':FieldValue.arrayUnion(['data1','data2','data3'])
        }, merge: true);
      

      【讨论】:

        【解决方案4】:

        如果您有对象列表,则另一种方式

        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)}) ;
        }
        

        【讨论】:

          【解决方案5】:

          我找到了解决办法。 试试这个:

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

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

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

          cd ios
          pod update Firebase
          

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

          【讨论】:

            猜你喜欢
            • 2023-01-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-09-25
            • 2020-11-26
            • 2022-01-17
            • 2020-07-02
            相关资源
            最近更新 更多