You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从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_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 16:24:00