Firebase Firestore数据读取失败,请求获取pseudo字段值解决方案
修复Firestore数据获取失败的问题
你的代码里有两个关键问题,导致拿不到Firestore的数据:
- 取数据的方式错误:新版Firestore中,
DocumentSnapshot需要调用data()方法(带括号)获取数据,而不是直接访问data属性。 - 未处理异常场景:如果目标文档不存在、数据为空,直接读取字段会触发空指针异常,得先做判断。
给你两种修正后的写法,选顺手的用:
写法一:用async/await(更直观)
void _userData() async { // 定位目标文档 final docRef = FirebaseFirestore.instance .collection("Users") .doc("axelduf2006@gmail.com"); // 获取文档快照 final snapshot = await docRef.get(); // 先判断文档是否存在 if (snapshot.exists) { // 取出数据并强转为Map类型 final data = snapshot.data() as Map<String, dynamic>?; if (data != null) { // 读取并打印pseudo字段 print("pseudo: ${data['pseudo']}"); } else { print("文档内无数据"); } } else { print("找不到该用户的文档"); } }
写法二:用then链式调用
void _userData() { FirebaseFirestore.instance .collection("Users") .doc("axelduf2006@gmail.com") .get() .then((snapshot) { if (snapshot.exists) { final data = snapshot.data(); if (data != null) { print("pseudo: ${data['pseudo']}"); } } else { print("用户文档不存在"); } }) .catchError((err) { // 捕获数据获取过程中的错误 print("获取数据出错: $err"); }); }
另外再检查这几点,确保数据能正常获取:
- 确认项目已正确配置Firebase的平台配置文件(安卓为
google-services.json,iOS为GoogleService-Info.plist) - 检查Firestore安全规则,开发阶段可临时设置为
allow read, write: if true;(上线后务必修改为严格权限规则) - 确认
Users集合中确实存在ID为axelduf2006@gmail.com的文档,且该文档包含pseudo字段
内容的提问来源于stack exchange,提问作者Fixster
相关产品推荐
相关产品推荐

