如何在Firebase Firestore集合的每个文档内创建子集合
问题原因分析
你当前代码的逻辑是遍历LoanFriends集合下的全部文档,给每一个文档都新增了ReceivedLoanData子集合的收款记录,不符合单条账目对应单个往来对象的使用需求。
修复后的代码示例
你需要先获取当前录入账目对应的往来好友的文档ID,直接对指定文档操作即可,不需要查询全量集合遍历:
onPressed: () async{ Map<String, dynamic> mapdata = { 'amount':_amountreceivedcontroller.text, 'details': _detailsreceivedcontroller.text, // 建议新增时间戳字段,方便后续按时间排序账目、做提醒逻辑 'createTime': FieldValue.serverTimestamp(), }; // 替换为当前页面对应的往来好友文档ID,通常从好友列表页跳转时传递该参数 String targetFriendDocId = "当前选中的好友文档ID"; await FirebaseFirestore.instance .collection('LoanFriends') .doc(targetFriendDocId) .collection('ReceivedLoanData') .add(mapdata); _amountreceivedcontroller.text = ''; _detailsreceivedcontroller.text = ''; Navigator.pop(context); },
补充说明
- 如果是从好友列表页点击特定好友进入的收款录入页,跳转时直接把对应好友的文档ID作为参数传递到当前页面使用即可,全量遍历集合会增加不必要的性能消耗和读写成本
- 可按需添加输入校验、操作异常捕获的逻辑,提升使用稳定性
内容的提问来源于stack exchange,提问作者NewbieProgrammer
相关产品推荐
相关产品推荐

