Cloud Firestore - 将实时侦听器更新计为读取操作吗?

时间:2017-10-04 18:47:15

标签: firebase google-cloud-firestore

说我在听文件:

db.collection("cities").document("SF")
    .addSnapshotListener { documentSnapshot, error in
      guard let document = documentSnapshot else {
        print("Error fetching document: \(error!)")
        return
      }
      print("Current data: \(document.data())")
    }

根据Firestore billing policy,每次数据更新都计为读取操作,还是监听行为计数?

另外,我说我正在听一些文件:

db.collection("cities").whereField("state", isEqualTo: "CA")
    .addSnapshotListener { querySnapshot, error in
        guard let documents = querySnapshot?.documents else {
            print("Error fetching documents: \(error!)")
            return
        }
        let cities = documents.map { $0["name"]! }
        print("Current cities in CA: \(cities)")
    }

我是否会立即对与查询匹配的所有文档或每个文档的每次更新(或两者都有)进行读取操作?

1 个答案:

答案 0 :(得分:8)

听取行为本身并不算作读取,但每次查询至少收取一份文件。在定价页面中,"查询的最低费用":

  

对于您执行的每个查询,只读取一个文档的最低费用,即使查询未返回任何结果。

初始读取和更新都计算在内。但是,如果您在已经这样做之后不久重新听一次,那么您不会因为您上次听完以来没有改变的文件而被收取费用。目前这个短暂的门槛是30分钟。那也在那里,"听取查询结果":

  

当您收听查询结果时,每次添加或更新结果集中的文档时,都需要为读取付费

     

此外,如果监听器断开超过30分钟(例如,如果用户离线),则会向您收取读取费用,就好像您已发出全新查询一样。