https://firebase.google.com/docs/firestore说:
与实时数据库一样,Cloud Firestore使用数据同步来更新任何已连接设备上的数据。
我试图弄清楚这种“数据同步”由什么组成。
https://firebase.google.com/docs/firestore/manage-data/enable-offline说:
启用持久性后,Cloud Firestore会缓存从后端收到的每个文档以供脱机访问。
只要后端发生更改,Cloud Firestore是否会更新该缓存? 例如,如果我的缓存中有某个文档,该文档是否 在后端更改该文档时自动更新(a)或 (b)每当我进行使用该文档的查询时,我碰巧都在线 当时?
更新
我要重申我的最后一段,因为它被误解了 至少一个人。
想象一下以下情况:
现在我的问题是:这些文件之一是否在云中更改(不是在 智能手机),Firestore SDK在什么情况下会更新 文件在缓存中?它会(a)尽快自动更新文件吗 在云端更改之后,或(b)下次更新文档时, 移动应用程序会查询使用该文档的信息吗?
答案 0 :(得分:0)
我认为突出显示的两个段落都是简单明了的解释,并回答您的问题:
只要后端发生更改,Firestore是否会更新该缓存?
是的,如果您处于脱机状态并且某些文档已更改,则重新联机后,您将获得所有已更改的文档,反之亦然;如果您在本地(在缓存中)更改某些文档,则当您重新联机时,所有更改后的文档将发送到Firebase服务器。
如果您有一个查询返回10个文档,则意味着您与10个文档保持同步,这基本上意味着如果这10个文档中的文档被更改,则仅针对该更改触发您的侦听器。
在后端更改文档时自动进行文档更新(a)
是的,首先,在您的缓存中,当您重新联机后,也在Firebase服务器上。
每当我使用该文档进行查询时,我碰巧当时处于在线状态吗?
无论何时在线和文档更改,都会实时收到通知。
编辑:
如果这些文档之一在云中(而不是在智能手机上)更改,那么Firestore SDK在什么情况下会更新缓存中的文档?是(a)在云上进行更改后不久自动更新文档,还是(b)下次移动应用程序使用文档进行查询时更新文档?
只要您与这些文档保持同步,它就会在文档更改的第二时刻发生。同步的意思是,您在代码中使用get()
调用来获取这些文档,或者您正在实时侦听文档更改。只需创建对文档或查询的引用,而无需使用侦听器,则不会以任何方式通知您。
下次移动应用程序使用文档进行查询时更新文档吗?
由于您在线且与文档同步,因此不正确,会立即触发侦听器。
编辑2:
简而言之,每当文档发生更改时,就会调用一个侦听器。 “下一次应用程序执行查询”是不正确的句子,因为在创建查询并附加侦听器时,您始终与数据库同步,并且在文档更改时会立即收到通知。 不是,文档在数据库中链接在一起,当我查询(在某个时间点)时,我得到了更改,不,在更改发生时,您总是会收到通知。这就是实时数据库的优点,可以在发生更改时通知它:)
答案 1 :(得分:0)
如果启用了本地缓存,则Firestore会自动将它收到的所有文档存储在该本地缓存中。
仅当您的应用通过调用phase angle
或ke = pyasl.KeplerEllipse(1.3, 2., e=0.5, Omega=70., i=10.0, w=110.0, ??? )
来请求文档时,才会发生这种情况。 Firestore不会自动代表您请求文件。因此,如果您的应用程序不请求文档,则缓存将不会更新。