如何从AsyncSnapshot<QuerySnapshot>中获取Firestore文档ID(uid)
解答
你要获取的文档ID是DocumentSnapshot的内置属性,直接从查询返回的文档列表中读取即可,具体实现如下:
操作步骤
- 从
snapshot.data中取出QuerySnapshot实例,做好非空判断 - 遍历
QuerySnapshot的docs属性,该属性存储了所有匹配查询条件的文档 - 每个文档对象的
id属性即为你需要的uid(文档名称)
完整代码示例
FutureBuilder( future: FirebaseFirestore.instance .collection("users") .where('type', arrayContainsAny: ["Game", "Movie"]) .get(), builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) { if (snapshot.hasError) { return Text(snapshot.error.toString()); } if (snapshot.connectionState == ConnectionState.done) { // 取出QuerySnapshot QuerySnapshot? querySnapshot = snapshot.data; if (querySnapshot == null) { return const Text("无匹配数据"); } // 遍历文档获取uid for (var doc in querySnapshot.docs) { String uid = doc.id; // 这里就拿到了文档ID/uid // 如需获取文档字段可以用 doc.data() // Map<String, dynamic> fields = doc.data() as Map<String, dynamic>; } // 替换为你要返回的业务Widget return const SizedBox(); } return const CircularProgressIndicator(); } );
补充说明
DocumentSnapshot的id是Firestore SDK默认返回的属性,不需要提前把uid存入文档字段,查询时会自动携带。
内容的提问来源于stack exchange,提问作者Beginner_
相关产品推荐
相关产品推荐

