Firestore onSnapshot定价疑问:仅监听新增是否需为修改/删除付费?
Firestore监听器相关问题解答
问题1:初始示例代码的监听器是否同时监听新增、修改和删除事件?
初始代码如下:
db.collection("cities").where("state", "==", "CA") .onSnapshot((snapshot) => { snapshot.docChanges().forEach((change) => { if (change.type === "added") { console.log("New city: ", change.doc.data()); } if (change.type === "modified") { console.log("Modified city: ", change.doc.data()); } if (change.type === "removed") { console.log("Removed city: ", change.doc.data()); } }); });
是的,这个监听器会同时监听added(新增)、modified(修改)和removed(删除)三类事件。onSnapshot会实时捕获查询结果集内所有文档的变更,snapshot.docChanges()会返回所有类型的变更记录,代码里的三个if分支只是对这三类变更分别做了日志输出处理而已。
问题2:仅处理added类型变更时,是否仍会因文档修改/删除产生Firestore监听计费?
修改后的代码如下:
db.collection("cities").where("state", "==", "CA") .onSnapshot((snapshot) => { snapshot.docChanges().forEach((change) => { if (change.type === "added") { console.log("New city: ", change.doc.data()); } }); });
会产生计费。Firestore的监听计费规则是基于查询结果集是否发生变更来判定的,和你在回调函数里是否处理所有变更类型无关。只要符合查询条件的文档发生修改(修改后仍符合条件)或被删除,Firestore就会触发快照更新并推送变更,这一过程会被计入监听计费次数。回调里只处理added只是你主动忽略了其他变更的业务逻辑,但监听本身依然会捕获这些变更,因此仍会产生对应的费用。
内容的提问来源于stack exchange,提问作者Raul
相关产品推荐
相关产品推荐

