You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 08:25:02