如何将Firebase实时数据库的Drivers节点查询代码转换为Cloud Firestore代码
实时数据库转Cloud Firestore正确实现代码
原有尝试代码的问题
- 错误查询了
earnings子集合,原逻辑是直接读取drivers集合下对应用户UID的单个文档,无需访问子集合 - 直接将查询结果转为字符串不符合需求,需要复用模型类做结构化解析
- 未正确判断Firestore文档是否存在,Firestore的查询返回的快照需要用
exists属性判断是否有有效数据
正确转换代码
1. 初始化Firestore集合引用
CollectionReference driversRef = FirebaseFirestore.instance.collection('drivers');
2. 数据查询逻辑
driversRef .doc(currentfirebaseUser!.uid) .get() .then((DocumentSnapshot documentSnapshot) { if (documentSnapshot.exists) { // 只需适配Firestore的快照结构修改Drivers.fromSnapshot方法即可 driversInformation = Drivers.fromSnapshot(documentSnapshot); } });
模型类适配说明
你需要调整原来的Drivers.fromSnapshot构造方法,适配Firestore的DocumentSnapshot结构,参考示例:
class Drivers { // 原有属性定义保持不变,比如id、name、phone、car_number等 String? id; String? name; // 其他属性... Drivers.fromSnapshot(DocumentSnapshot snapshot) { id = snapshot.id; Map<String, dynamic> data = snapshot.data() as Map<String, dynamic>; name = data['name']; // 其他属性赋值逻辑和原来保持一致,从data中取对应字段即可 } }
内容的提问来源于stack exchange,提问作者Sibusiso Mahlangu
相关产品推荐
相关产品推荐

