如何通过用户UID获取Firestore中对应的用户文档?
Flutter 动态获取Firestore用户专属文档
我目前正在开发一款Flutter应用,创建用户时会先建立身份验证凭据。
随后,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
相关产品推荐
相关产品推荐

