如果我想从firestore获取数据,我可以指定源,默认情况下,从服务器或缓存获取数据,如下所示:
query.get(Source.CACHE)
如果使用上面的代码,我通常会得到50个文档。现在我想从缓存中的查询中删除一个特定的文档,所以我只想得到49个文档。
怎么做?有可能吗?
您无法直接控制Firebase SDK维护的内部缓存的状态。您不能删除或使特定项目无效。
缓存完全由SDK管理。SDK根据文档是否与服务器同步来确定何时添加或删除文档。
您可以使用SDK删除文档,这将从缓存的结果中删除该文档。但该删除最终将与服务器同步,这是一个永久性的更改。
如果您有步骤显示内部缓存存在某种错误或与服务器内容不一致,请向Firebase支持提交一份错误报告,该报告现在显示,以重现问题。
我想从缓存中的查询中删除一个特定的文档,所以我只想得到49个文档。
在delete()
操作中无法指定。如果你想获得这种行为,你的设备应该离线。这样,Firestore将从本地缓存中删除该记录。但请注意,一旦您重新获得连接,您的记录也将从Firebase服务器中删除。在线时,您不可能在缓存中删除文档,而不是从Firebase服务器中删除文档。