如何在Flutter Firebase中程序化获取并列出所有文档ID
批量获取Firebase集合中所有文档ID的方法
你可以直接获取整个集合的快照,遍历所有文档来批量获取ID,不用手动逐个查询。如果你的文档ID需要转为double类型,只需要在获取后做类型转换即可,代码示例如下:
_listAllDocIdsFirebase() async { var myCollection = FirebaseFirestore.instance.collection('produtos'); // 获取集合下所有文档的快照 var querySnapshot = await myCollection.get(); // 遍历所有文档,提取ID并转为double类型 List<double> docIds = []; for (var doc in querySnapshot.docs) { // 把文档ID字符串转为double,避免转换失败报错 double? docIdDouble = double.tryParse(doc.id); if (docIdDouble != null) { docIds.add(docIdDouble); // 如果需要同时获取文档里的preco字段,也可以在这里处理 var preco = doc.data()['preco']; print('文档ID:$docIdDouble,价格:$preco'); } } // 输出所有转换后的文档ID print('所有文档ID(double类型):$docIds'); }
代码说明:
- 使用
myCollection.get()一次性获取集合内所有文档的快照,避免多次单个查询的低效操作 - 通过
querySnapshot.docs遍历集合里的每一个文档 - 用
double.tryParse()把文档ID(字符串类型)转为double,防止非数字ID导致的报错 - 如果不需要转换类型,直接收集
doc.id即可得到字符串类型的文档ID
内容的提问来源于stack exchange,提问作者user14753120
相关产品推荐
相关产品推荐

