【问题标题】:FlutterFire update Array instead of replacing itFlutterFire 更新 Array 而不是替换它
【发布时间】:2021-10-08 20:07:55
【问题描述】:

所以menus 字段将映射存储在数组/列表中。但是,当我想向menus 添加地图时,它会用新的地图替换所有现有地图,而不是添加新地图,这里是我的代码:

    Menu menuObj = Menu(
      name: menuName, categories: [
      Categories(
        name: categoryName,
      ),
    ]);

FirebaseFirestore.instance.doc('menus/${FirebaseAuth.instance.currentUser!.uid}')
        .set({
      'menus': [
        menuObj.toJson(),
      ]
    }, SetOptions(merge: true));

【问题讨论】:

  • 您是否尝试过在 firestore 实例上将您的 set 方法更改为 update 我想应该可以工作
  • @AbhishekVishwakarma 不,效果不佳,但我发现并在stackoverflow.com/a/69501959/14924556下方写了一个答案

标签: firebase flutter dart google-cloud-firestore


【解决方案1】:

我不得不改用这段代码:

    FirebaseFirestore.instance
        .doc('menus/${FirebaseAuth.instance.currentUser!.uid}')
        .set({
      'menus': FieldValue.arrayUnion([menuObj.toJson()])
    }, SetOptions(merge: true));

重要的是:FieldValue.arrayUnion([menuObj.toJson()])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-06
    • 2019-11-28
    • 2018-07-20
    • 2021-01-06
    • 1970-01-01
    • 2020-11-19
    • 2018-04-25
    • 2020-02-05
    相关资源
    最近更新 更多