10

假设我正在听一个文件:

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 计费政策,每次更新数据是否都算作读取操作,或者侦听行为本身是否算作?

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

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)")
    }

是否会立即对与查询匹配的所有文档或每个文档的每次更新(或两者兼而有之)收取读取操作的费用?

4

1 回答 1

14

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

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

初始读取和更新都计数。但是,如果您在重新收听后不久重新收听,您将不会为自上次收听以来未更改的文件付费。目前,这个短暂的阈值是 30 分钟。这也在那里,在“收听查询结果”下:

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

此外,如果侦听器断开连接超过 30 分钟(例如,如果用户离线),您将被收取读取费用,就像您发出了全新的查询一样。

于 2017-10-04T19:49:56.993 回答