我想从firestore的集合中获取多个字段的文档



"标题列表";是集合文档的名称列表。对于";questionMaps";,文件名是密钥;文本";文档数组类型的字段是值。我想让这个问题Maps有30个元素,但我尝试过使用for语句,但它不起作用。我想知道如何解决这个问题。这是我的密码。

Map questionMaps = {};
for (int i = 0; i < 30; i++) {
FirebaseFirestore.instance
.collection("titles")
.doc(widget.titleList[i])
.get()
.then(
(ref) {
List questions = ref.get("text");
questionMaps[widget.titleList[i]] = questions;
},
);
}

考虑尝试获取集合的整个快照,然后对其运行逻辑。既然你说你的文档id是你的titleList列表中的名称,那么考虑一下:

Map questionMaps = {};
final querySnapshot = await FirebaseFirestore.instance.collection("titles").get();
querySnapshot.docs.forEach((doc) {
List questions = (doc.data() as Map<String, dynamic>)["text"];
questionMaps[doc.id] = questions; 
});

这将为每个doc.id注册您的问题List,然后您可以基于titleList获得它,例如:

print(questionMaps[titleList[0]]); // will get you questions which have the  name key.

最新更新