网络上的Firestore对两个听众收取两次阅读费吗



使用Firestore Web API v9,假设我有一个集合侦听器和该集合中某个文档的文档侦听器。该文档的更新即将发布。

两个问题:

  1. 两次阅读是否收费
  2. 一般来说,这是可以接受的做法吗?SDK是将数据发回两次,还是发送一次并发送两次更新

示例:

collectionSnapshots(collection(firestore, 'people')).subscribe(...);
docSnapshots(doc(firestore, 'people/john')).subscribe(...);

两次读取是否收费?

无论您有多少侦听器,您都要为正在读取的文档数付费。如果"people"集合有50个文档,而侦听器返回50个文档时,您将被收取50次读取的费用。以后收到的任何更新将收取每次更新1次的费用。

SDK是将数据发回两次,还是发送一次并发送两次更新?

添加侦听器时,它将返回与您的查询匹配的所有文档(在本例中,是完整的人员集合(。之后,每当添加/更新/删除文档时,监听器都会收到更新。

是的,如果您在people集合上有一个监听器,而在该集合的文档上有另一个监听器。两个侦听器都将获取更新的数据,并且每次更新将向您收取2次读取费用。不过,您不需要仅为一个文档使用另一个侦听器。您可以从收到的更改中读取文档ID,并在web应用程序中进行更新。

import { collection, query, where, onSnapshot } from "firebase/firestore";
const q = query(collection(db, "people"));
const unsubscribe = onSnapshot(q, (snapshot) => {
snapshot.docChanges().forEach((change) => {
if (change.type === "modified") {
// a document in people collection is modified
const docId = change.doc.id; 
const docData = change.doc.data();
}
});
});

相关内容

最新更新