Firestore读取成本计量:文档字段读取是否额外计费?
Firestore字段读取成本问题解答
仅获取文档快照的那次get()会计入Firestore读取成本,后续从本地快照中读取字段的value.get("field name")不会产生额外读取费用。
原因说明
Firestore的读取计费逻辑基于云端数据获取操作:
- 调用
FirebaseFirestore.instance.collection('users').doc(userUid).get()时,会向Firestore云端发起一次请求,拉取完整文档数据并生成本地DocumentSnapshot,这一步消耗1次读取额度。 - 后续调用快照的
get()方法,只是从本地已缓存的快照数据中提取对应字段值,不会再与云端交互,因此不会产生额外读取成本。
代码优化建议
你的代码虽不会额外计费,但存在冗余写法。可以先一次性await获取文档快照,再直接读取字段,让代码更简洁高效:
_setStoreOwnerObjByFetchingUserData(String userUid) async { DocumentSnapshot<Map<String, dynamic>> userDoc = await FirebaseFirestore.instance.collection('users').doc(userUid).get(); await StoreOwner().updateOwnerData( userUid, userDoc.get("shopName"), userDoc.get("shopAddress"), userDoc.get("shopType"), userDoc.get("shopSize"), userDoc.get("ownerName"), userDoc.get("ownerNumber"), userDoc.get("subscriptionStatus")); }
内容的提问来源于stack exchange,提问作者Nada Abbas
相关产品推荐
相关产品推荐

