Firestore onSnapshot-如何判断哪些字段已更改?

skw*_*wny 3 firebase google-cloud-firestore

我正在对数据建模,并且对onSnapshot(Web)侦听器有疑问。正如在SO和文档中的几篇文章中所指出的,在初始调用之后,侦听器仅获取更改的数据。我有兴趣知道更改后的数据是什么。如果侦听文档,那么获取的仅仅是字段还是整个文档?

在一个文档上有一个侦听器,并且该文档上的字段的值发生更改(或者添加或删除了一个字段)的情况下,仅获取该字段吗?换句话说,这类似于将child_changed/added/removed侦听器放置在RTDB中的节点上吗?

目的是确定我是否应该在RTDB或Firestore中保持经常更改的文档,客户端必须收听哪些文档。我宁愿不要仅由于字段更改而将整个文档重新发送给客户。

例。我们有以下文件:

rando_id:
  field1
  field2
  field3
Run Code Online (Sandbox Code Playgroud)

如果field2的值发生变化,将仅field2是从Firestore DB传输到客户端的数据吗?同样适用于添加field4或删除field1。是否会将这些字段发送给客户端?

Dou*_*son 5

Firestore中的存储单位是文档。没有更细粒度的方式来传输数据。没有API可以告诉您文档中到底发生了什么更改-您必须使用以前的快照(如果有)来确定自己。您也不能在安全规则中定位文档字段。对于Firestore中的文档,全部或全部不存在。

  • 您还可以重构您的数据,以便在不同集合中的文档中存在更频繁的字段。 (2认同)