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

如何通过用户UID获取Firestore中对应的用户文档?

Flutter 动态获取Firestore用户专属文档

我目前正在开发一款Flutter应用,创建用户时会先建立身份验证凭据。

用户身份验证与Firestore文档关联流程

随后,Firestore中会生成一个唯一的文档ID与该用户关联。

我的目标是从Firestore中动态获取这个用户专属文档,以便访问和使用其中的相关变量。

代码分析与修正

你的实现思路是正确的——直接通过用户UID定位到users集合下的对应文档,但代码存在一处语法错误:print(('user id: $userId');多了一个左括号,会导致编译失败。以下是修正后的完整代码:

Future<Map<String, dynamic>> _fetchData(String userId) async {
  try {
    // 使用用户UID直接构建文档引用
    DocumentSnapshot<Map<String, dynamic>> documentSnapshot =
        await FirebaseFirestore.instance
            .collection('users')
            .doc(userId)
            .get();

    print('user id: $userId');

    if (documentSnapshot.exists) {
      return documentSnapshot.data()!;
    } else {
      print('用户ID对应的文档不存在: $userId');
      return {};
    }
  } catch (e) {
    print('获取数据出错: $e');
    return {};
  }
}

使用示例

通常可以从Firebase Auth获取当前已登录用户的UID,再调用该方法获取文档数据:

void getUserData() async {
  User? currentUser = FirebaseAuth.instance.currentUser;
  if (currentUser != null) {
    Map<String, dynamic> userData = await _fetchData(currentUser.uid);
    // 访问文档中的变量,例如userData['username']
    print('用户昵称: ${userData['username']}');
  } else {
    print('用户未登录');
  }
}

内容的提问来源于stack exchange,提问作者Karma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 19:45:17