说我在听文件:
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)")
}
我是否会立即对与查询匹配的所有文档或每个文档的每次更新(或两者都有)进行读取操作?
答案 0 :(得分:8)
听取行为本身并不算作读取,但每次查询至少收取一份文件。在定价页面中,"查询的最低费用":
对于您执行的每个查询,只读取一个文档的最低费用,即使查询未返回任何结果。
初始读取和更新都计算在内。但是,如果您在已经这样做之后不久重新听一次,那么您不会因为您上次听完以来没有改变的文件而被收取费用。目前这个短暂的门槛是30分钟。那也在那里,"听取查询结果":
当您收听查询结果时,每次添加或更新结果集中的文档时,都需要为读取付费
此外,如果监听器断开超过30分钟(例如,如果用户离线),则会向您收取读取费用,就好像您已发出全新查询一样。