Firestore在用户文档子集合存储数据的方法及报错修复
修复方案
1. 核心错误原因
你在saveInSubcollectionToRemote方法中,.doc('uid')传入的是固定字符串'uid',而非当前用户的真实uid值,和你之前写的saveToRemote方法逻辑不一致,才会导致生成名为uid的错误文档。
2. 修正后代码
Future saveInSubcollectionToRemote() async{ Map<String, dynamic> weightData = UserManager.userWeights; // 从已保存的用户数据中取真实uid,替换固定字符串'uid' String currentUid = UserManager.userdata['uid']; return await FirebaseFirestore.instance.collection('users') .doc(currentUid) .collection('weights') // 如果你不需要自定义文档ID,也可以用add方法自动生成ID,避免同体重数据覆盖 // 可选写法:.add(weightData); .doc(weightData['userWeight'].toString()) .set(weightData); }
3. 额外注意事项
- 确保调用该方法前
UserManager.userdata已经完成初始化且不为空,否则会抛出空指针异常 - 如果存在同一用户多次录入相同体重的场景,不建议用体重值作为子集合文档ID,会导致旧数据被覆盖,推荐使用Firestore自动生成文档ID,或者用记录时间戳作为文档ID
内容的提问来源于stack exchange,提问作者Dalon
相关产品推荐
相关产品推荐

