Firebase监听集合更改-成本

时间:2019-09-19 22:19:29

标签: firebase google-cloud-firestore

我有一个集合,其中包含大约1000个文档。我在此收藏夹上设置了一个侦听器,以查找更改。该侦听器与此非常相似: https://firebase.google.com/docs/firestore/query-data/listen#listen_to_multiple_documents_in_a_collection

db.collection("cities").where("state", "==", "CA")
    .onSnapshot(function(querySnapshot) {
        var cities = [];
        querySnapshot.forEach(function(doc) {
            cities.push(doc.data().name);
        });
        console.log("Current cities in CA: ", cities.join(", "));
    });

但是,此代码示例也可以监听快照之间的更改:https://firebase.google.com/docs/firestore/query-data/listen#view_changes_between_snapshots

db.collection("cities").where("state", "==", "CA")
    .onSnapshot(function(snapshot) {
        snapshot.docChanges().forEach(function(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());
            }
        });
    });

我的问题是,关于通过有线传输的数据,这两种实现之间真的有区别吗?在我的示例中,集合中有1000个文档。在获得最初的1000个文档后,如果一个文档发生更改,那么对于每种实现,通过网络发送了多少数据? 1份文件?还是1000?

通常,我会检查“ Chrome开发者工具”的“网络”标签以查看有效负载。如果有人知道如何找到此流数据的等效信息,那也很好。

1 个答案:

答案 0 :(得分:1)

Cloud Firestore有效地通过网络发送更改,本地客户端构建包含世界更新状态的快照。在您的示例中,更改单个文档将导致通过导线发送单个文档,并且将为您收取读取单个文档的费用(显然是每个连接的客户端)。