【问题标题】:Cloud Firestore: Write document reference from Flutter Plugin/SDKCloud Firestore:从 Flutter Plugin/SDK 编写文档参考
【发布时间】:2018-03-30 18:56:04
【问题描述】:

我正在寻找从 Flutter 应用到 Firestore 的文档引用。

如果我从 Firestore 控制台创建引用,这就是它的外观:

如果我只是在 Flutter 的字符串中编写引用

  Map<String, String> usersReference = {
    uid: 'users/' + uid
  };
  Map<String, Object> userData = {
    'usersReference': usersReference
  };
  Firestore.instance.collection('chats').add(userData).then((doc) {
    doc.setData(userData);
  });

我明白了:

有没有办法使用 Flutter cloud_firestore 插件或任何其他 SDK 编写引用(例如从控制台)?

【问题讨论】:

    标签: dart google-cloud-firestore flutter


    【解决方案1】:

    您不应该为引用声明一个对象,将其更改为 DocumentReference

    Map<String, DocumentReference> userData = {
      'usersReference': usersReference
    };
    Firestore.instance.collection('chats').add(userData).then((doc) {
      doc.setData(userData);
    });
    

    【讨论】:

    • 我忘了提到我的示例中的 usersReference 是什么。我编辑了我原来的帖子。 usersReference 是一个(n)引用列表/对象。如何在 Flutter 中创建 DocumentReference?它没有可见的构造函数。
    • 您不能像以前那样创建 usersReference。
    • 要获取 DocumentReference,您应该从 firestore 获取它,如下所示 Firestore.instance.collection("children").document("xyz").get().then((DocumentSnapshot data){ data.reference; //返回 DocumentReference });
    【解决方案2】:

    是的,您可以在文档中添加文档引用,但在开发环境中不建议这样做。您只能在 Firestore 控制台上使用它。

    来自#AskFirebase 的episode 可能会帮助您正确理解它。

    【讨论】:

      【解决方案3】:

      您要做的第一件事是创建对文档的实际引用,例如

      DocumentReference userRef = FirebaseFirestore.instance.collection("users").doc(FirebaseAuth.instance.currentUser?.uid);
      

      这引用“用户”集合,然后选择具有用户 uid 的文档。

      接下来,您所要做的就是设置数据。

      var farmData = {
          'name': farmName,
          'address': farmAddress,
          'city': farmCity,
          'state': farmState,
          'zipcode': farmZip,
          'phone': farmPhone,
          'alternatePhone': farmAlternatePhone,
          'created': DateTime.now(),
          'users': [userRef]
        };
      
      await FirebaseFirestore.instance.collection('farms').doc(uuid).set(farmData);
      

      就我而言,我想要一个用户参考列表。目前该表中只有 1 个项目,但如果我决定稍后再更新,我可以使用更多用户来更新它。

      【讨论】:

        猜你喜欢
        • 2021-03-25
        • 2018-08-02
        • 2020-07-02
        • 2021-07-10
        • 2018-03-19
        • 2021-07-31
        • 1970-01-01
        • 2019-06-14
        • 2020-06-02
        相关资源
        最近更新 更多