如何在Flutter Web中获取Firebase集合下所有文档的ID
获取Firebase集合所有文档ID列表
你的代码问题在于value是QuerySnapshot对象,包含了集合里的所有文档快照,不能直接提取ID。要拿到每个文档的ID,需要遍历value.docs数组,每个文档快照的id属性就是你需要的文档ID字符串。
方法1:延续你的回调写法
FirebaseFirestore.instance.collection('Guests').get().then((querySnapshot) { List<String> guestIds = querySnapshot.docs.map((doc) => doc.id).toList(); print(guestIds); // 这就是所有文档ID的字符串列表,可直接用于后续比对 });
方法2:使用async/await(更易读,适合复杂逻辑)
如果是在异步函数中,推荐用这种方式,方便后续基于ID列表做更多操作:
Future<List<String>> getGuestIds() async { QuerySnapshot querySnapshot = await FirebaseFirestore.instance.collection('Guests').get(); return querySnapshot.docs.map((doc) => doc.id).toList(); } // 调用示例 void main() async { List<String> ids = await getGuestIds(); // 示例:比对某个ID是否存在于列表中 bool hasTargetId = ids.contains('你要比对的目标ID'); print(hasTargetId); }
关键说明
querySnapshot.docs返回集合内所有文档的快照列表- 每个
doc.id对应单个文档的ID字符串 - 通过
map将快照列表转换为ID字符串列表,再用toList()整理成可直接使用的列表格式
内容的提问来源于stack exchange,提问作者Mariam Ashraf Abdel Rahman Ahm
相关产品推荐
相关产品推荐

