firebase Firestore 文档已读取

Posted

技术标签:

【中文标题】firebase Firestore 文档已读取【英文标题】:firebase Firestore document read 【发布时间】:2021-11-18 00:36:46 【问题描述】:

我正在使用 google cloud FireStore 作为我们电子商务移动应用程序的数据库。当我们从云 Firestore 检索文档时,我对 Firestore 文档的文档读取计数感到有点困惑。

firebase 文档的位置:users/123/ 该文档包含用户信息,如 userId、userName、wishlist、cart、地址等。 我使用多个子地图将所有用户数据保存在一个文档中,以降低 Firestore 计费成本。 文件结构:

userId:"123",
userName:"Sunil",
addresses : 
  address1 : 
    "doorNo":"123",
    "city" : "Bengaluru"
  ,
  address2 : 
    "doorNo":"456",
    "city" : "Bengaluru"
  ,
  address3 : 
    "doorNo":"789",
    "city" : "Bengaluru"
  ,
wishlistItems:
  item1 : 
    "itemId":"1"
  ,
  item2 : 
    "itemId":"2"
  ,
  item3 : 
    "itemId":"3"
  ,
  item4 : 
    "itemId":"4"
  ,
 ,
cartItems:
  cartItem1:
    "itemId":"1",
    "itemCount":"2",
  ,
  cartItem2:
    "itemId":"2",
    "itemCount":"5",
  ,
  cartItem3:
    "itemId":"3",
    "itemCount":"7",
  ,
  cartItem1:
    "itemId":"4",
    "itemCount":"8",
  ,
 ,
,

我检索文档如下: firestore().collection("users").doc("123").get();

我的问题: 每次检索将计算多少次读取? 它会只有一个,因为我只检索一个文档还是 12 个(因为该文档有 11 个子图和 1 个作为正常计数)?

请帮我弄清楚这一点。提前谢谢你。

【问题讨论】:

【参考方案1】:

由于您正在阅读单个文档中的所有内容,因此将其计为 1 次阅读。

【讨论】:

首先,我要感谢您抽出时间回复此问题。您的回复确实帮助我正确理解了计费标准。 我的另一个问题是,我们可以在单个文档中添加多少个键值对。谢谢。【参考方案2】:

根据您在结果中返回的文档数收费,不考虑内容。

firestore().collection("users").doc("123").get();

上述读取将只花费 1 次读取(如果文档存在,也是如此)。

firestore().collection("users").where("age", ">=", 10).get();

例如,在上面的查询中,如果匹配并返回了 57 个文档,那么您将被收取 57 次读取的费用。


如果您启用了离线持久性并且从缓存中读取了一些文档,则您无需为它们付费。

【讨论】:

首先,我要感谢您抽出时间回复此问题。您的回复对我很有帮助,希望对其他人也有帮助,以了解 Firestore 计费费用。 @I'mSunil3 不客气。只要总大小低于 1 MB,您可以在文档中添加多少个键值对并没有限制 @Dharmaraj 如果 OP 启用了离线持久性,这是 Cloud Firestore 中的默认设置,那么他将只能在离线时读取缓存。当 OP 有互联网连接时,它将始终读取文档的在线版本。

以上是关于firebase Firestore 文档已读取的主要内容,如果未能解决你的问题,请参考以下文章

firebase firestore以斜角读取特定文档

Firebase Firestore 读取和定价

如何使用节点读取在 Firestore 中创建的最新文档?

Firebase 云功能与 Firestore 返回“已超过截止日期”

Firebase Firestore 快照读取计数

Firebase Firestore 读取操作非常高