如何从持久化中排除某些 Firebase 数据库节点?

Posted

技术标签:

【中文标题】如何从持久化中排除某些 Firebase 数据库节点?【英文标题】:How to exclude some of the Firebase database nodes from being persisted? 【发布时间】:2017-04-18 03:41:28 【问题描述】:
FirebaseDatabase.getInstance().setPersistenceEnabled(true);

此语句在应用重新启动时将所有读取和写入操作保留在 firebase 数据库中。但是我需要什么来排除我的一些数据库节点被持久化?

我已经将数据存储在本地数据库中,并且仅为数据库写入操作启用了持久性。我的一些查询正在下载大量数据以向用户显示一些报告,我希望 Firebase 将该查询排除在缓存之外。

有没有首选的方法来做到这一点?或者我们怎样才能只持久化数据库写操作?

【问题讨论】:

【参考方案1】:

这个语句持久化firebase中的所有读写操作 跨应用程序的数据库重新启动。

它不会保留所有这些东西。它将保存最多 10MB 最近读取的数据。该限制不适用于您已写入但尚未同步的数据。

如果启用此功能,您将无法从持久性中排除任何路径。

如果您想从数据库中读取某些内容而不让其访问持久性缓存,请考虑通过 REST API 而不是通过 SDK 读取它。

【讨论】:

有没有办法绕过缓存或者使用SDK了解数据是来自缓存还是来自服务器? @Rasto 不适用于实时数据库。这是 Cloud Firestore 的一个功能。 如果能将它用于实时数据库就好了……添加起来可能不会太难。在此之前,我必须使用 REST :( 只是为了澄清一下:我不在乎某些东西是否存储在缓存中。我关心的是,当我获取数据时,我确信它们来自服务器而不是缓存,并且我必须同时具有离线持久性(为了其他一些数据)。

以上是关于如何从持久化中排除某些 Firebase 数据库节点?的主要内容,如果未能解决你的问题,请参考以下文章

我们如何才能从 hdfs 联邦的一个命名空间中排除一些数据节点?

如何从 SORM 表定义中排除类字段?

如何从 UseStatusCodePagesWithReExecute 中排除某些路由?

Firebase update() - 排除字段

如何从 git grep 搜索中排除某些目录/文件

如何从丑化/优化中排除某些 requireJS 文件