从Firebase/Flutter/Dat获取所有用户的Uid



我的应用程序是一种轮询应用程序。因此,管理员提出一个问题,用户回答这个问题,每个数据都存储在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中,一切看起来都很好,但在它完成growtableList之后就不一样了,这个函数返回null。

你对此有什么建议吗?

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

  • BREAKING:getDocuments/get已更新为接受GetOptions的实例(请参阅下文(
  • 弃用:文档已弃用,取而代之的是文档
  • 弃用:文档id已弃用,取而代之的是id

您可能需要迁移到较新的版本。

根据文档,使用snapshot.documents可以获得List<QueryDocumentSnapshot<T>>。所以我看了QueryDocumentSnapshot,很惊讶你直接将element["userAnswer"]应用于它。根据文档,你必须使用element.data()才能获得数据。

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

最新更新