【问题标题】:Adding Data into A map field (Flutter Firestore)将数据添加到地图字段(Flutter Firestore)
【发布时间】:2020-08-09 10:14:37
【问题描述】:

我正在使用 cloud_firestore 进行颤动。我想在按下按钮时添加到我的 firebase 数据库的特定文档的地图字段 (userInfo) 中。我不想添加任何其他字段,只想将更多数据附加到地图(userInfo)。在这种情况下,使用此代码名称始终是用户的唯一(用户 ID)。

    Firestore.instance.collection("prayerRooms")
              .document(docID)
              .updateData({

              'userInfo.userId': name,
              'userInfo.userCount': 2


          }
          );

【问题讨论】:

    标签: firebase flutter google-cloud-firestore


    【解决方案1】:

    这段代码:

     Firestore.instance.collection("prayerRooms")
                  .document(docID)
                  .updateData({
                  'userInfo.userId': name,
                  'userInfo.userCount': 2
              });
    

    将更新userInfo 映射中的userIduserCount。如果你想在 userInfo 映射中添加更多属性,那么你可以这样做:

     Firestore.instance.collection("prayerRooms")
                  .document(docID)
                  .updateData({
                  'userInfo.users': "user1",
              });
    

    这将在地图中添加一个名为users 的新属性。

    【讨论】:

    • 哦,不,不想添加其他属性,我想在地图的 userId 和 userCount 中添加更多数据。所以每次我用不同的用户按下按钮时,它应该将该用户的数据添加到 userCount 和 userId 字段中。它应该保留以前的数据,而不是覆盖或更新它。
    • 每次与不同的用户按下按钮时,您应该创建不同的文档而不是将其添加到地图中,最大文档大小为 1mb,如果每次不同的用户按下按钮并且您添加到地图然后应用程序不会缩放
    • 是的,我已经读过了。我的应用程序(至少开始时)将仅限于少数用户(30 或更少)。
    • 是的,你仍然需要从一开始就正确地做,每个用户都应该有自己的文档
    【解决方案2】:

    你可以使用SetOptions(merge: true) 来做这个

    完整代码:

    Firestore.instance.collection("prayerRooms")
          .document(docID)
          .set({
            'userInfo.userId': name,
            'userInfo.userCount': 2
          },
          SetOptions(merge: true),
        );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-27
      • 2021-01-08
      • 2018-06-22
      • 2021-06-13
      • 2020-09-12
      • 1970-01-01
      相关资源
      最近更新 更多