【问题标题】:Getting All Users Uid from Firebase / Flutter/Dart从 Firebase / Flutter/Dart 获取所有用户 Uid
【发布时间】:2023-04-02 11:32:01
【问题描述】:

我的应用程序是一种投票应用程序。所以管理员提出一个问题,用户回答这个问题,每个数据都存储在 Firestore 中。在管理页面,管理员可以看到自己创建的问题,当管理员点击问题时,可以看到用户对该问题的回答。

在答案页面上,我试图访问每个用户的 uid,但我无法做到这一点。我可以打印它们,但我不能以某种方式使用它们。我认为我在使用 Firebase 函数时犯了一些错误。

这是我尝试返回包含特定问题的列表的方法示例。但是这个函数不返回任何东西。

List getUserIDData() {
    List<String> growableList = [];
    List<String> userAnswerList = [];
    String adminQuestion = "What is the reason of life?";
    Firestore.instance.collection("user").getDocuments().then((snapshot) {
      snapshot.documents.forEach((element) {
        growableList.add(element.documentID);
      });
      for (int i = 0; i < growableList.length; i++) {
        Firestore.instance
            .collection("user")
            .document(growableList[i])
            .collection("answers")
            .where("adminQuestion", isEqualTo: adminQuestion)
            .getDocuments()
            .then((snapshot) {
          snapshot.documents.forEach((element) {
            userAnswerList.add(element["userAnswer"]);
          });
        });
        print(i);
      }
    });
    return growableList;
  }

我也尝试过使用 StreamBuilder,但在 Firestore.instance 之后,所有内容都会自动删除。在 Firestore 中,一切看起来都不错,但是在完成后,growableList 并没有保持不变,并且此函数返回 null。

你有什么建议吗?

【问题讨论】:

    标签: database firebase flutter dart google-cloud-firestore


    【解决方案1】:

    据我所知,您使用的是非常旧的 FlutterFire 版本,例如以下内容已更改:

    • 中断:getDocuments/get 已更新为接受 GetOptions 实例(见下文)。
    • 已弃用:文档已弃用,取而代之的是文档。
    • 已弃用:documentID 已弃用,取而代之的是 id。

    您可能想migrate to a newer version

    使用snapshot.documents,您将获得List&lt;QueryDocumentSnapshot&lt;T&gt;&gt; according to the documentation。因此,我查看了QueryDocumentSnapshot 并惊讶于您将element["userAnswer"] 直接应用于它。 According to the documentation你必须使用element.data()来获取数据。

    如果这没有帮助,我需要以输出形式提供更多信息,element 变量背后的内容。

    【讨论】:

    • 这是我完成项目的最后一项工作,所以我现在根本无法迁移到更新的版本。实际上,如果我打印 element["userAnswer"],它会给我正确的数据。但我不想打印,我想在 ListTile 中使用它。那么,我怎样才能将该值作为变量并在另一部分使用它。顺便说一下,元素有两种类型的变量,一种是“userAnswer”,另一种是“adminQuestion”
    • 好的,是否迁移由您决定。当然,帮助您并不容易,因为文档不再正确。该函数应该返回所有用户的文档 ID 列表(growableList)。是这样吗?这是你想要返回的还是你期望 userAnswerList 的?
    • growableList 应返回用户 ID 列表,而 userAnswerList 应返回包含用户答案的​​列表。我顺便解决了streambuilder的问题,但我仍然很好奇为什么这个方法不返回列表,它返回null同时growableList和userAnswerList
    • 我想知道每个 .add 之后的列表是什么样的。添加是否正常工作?
    • 是的,在每个 .add 方法之后,它都会添加,因为当我每次打印 growableList 时,它都会在控制台中为我提供正确的数据。但是当你从 Firestore.instance 出去时,growableList 什么都不包含。
    猜你喜欢
    • 1970-01-01
    • 2019-05-28
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    相关资源
    最近更新 更多