【发布时间】:2019-11-16 04:08:08
【问题描述】:
我可以指定来源如果我想从 firestore 获取数据,无论是默认值、服务器还是缓存,如下所示:
query.get(Source.CACHE)
如果使用上面的代码,我通常会得到 50 个文档。现在我想从缓存中的查询中删除一个特定的文档,所以我只想得到 49 个文档。
怎么做?有可能吗?
【问题讨论】:
标签: firebase google-cloud-firestore
我可以指定来源如果我想从 firestore 获取数据,无论是默认值、服务器还是缓存,如下所示:
query.get(Source.CACHE)
如果使用上面的代码,我通常会得到 50 个文档。现在我想从缓存中的查询中删除一个特定的文档,所以我只想得到 49 个文档。
怎么做?有可能吗?
【问题讨论】:
标签: firebase google-cloud-firestore
您无法直接控制 Firebase SDK 维护的内部缓存的状态。您不能删除或使特定项目无效。
缓存完全由 SDK 管理。 SDK 根据文档是否与服务器同步来确定何时添加或删除文档。
您可以使用 SDK 删除文档,这会将其从缓存结果中删除。但该删除最终会与服务器同步,这是永久性更改。
如果您有步骤显示内部缓存存在某种错误或与服务器的内容不一致,那么现在显示的file a bug report with Firebase support 会重现该问题。
【讨论】:
我想从缓存中的查询中删除一个特定文档,因此我只想获取 49 个文档。
您无法在delete() 操作中指定它。如果您想获得这种行为,您的设备应该处于离线状态。这样,Firestore 将从本地缓存中删除记录。但请注意,一旦您重新连接,您的记录也会从 Firebase 服务器中删除。在线时,您无法在缓存中而不是从 Firebase 服务器中删除文档。
【讨论】: