android – Firebase数据库无法离线加载数据

我有一个在离线模式下使用Firebase数据库的应用程序(通过调用Firebase Database.getInstance().setPersistenceEnabled(true)).在数据库中,只有当其他节点中的值设置为true时,用户才能访问该节点,规则如下所示:

{
  "rules": {
    ".write": "auth != null",".read": "false","mynode": {
      "$dataId": {
        ".read": "auth != null && root.child('userAccessNode/' + auth.uid + '/' + $dataId).val() == true"
      }
    }
  }
}

当设备连接到互联网时,它可以正常工作.但是,当我在设备上转动飞行模式时,回调addValueEventListener(ValueEventListener)不会返回任何内容 – 也不会返回错误,而不是值,只是挂起,直到我再次打开Internet连接.

我确保在脱机之前检索了两个节点,因此我确信有问题的节点和保存访问信息的节点已被缓存.

对于具有简单规则的其他节点,例如(auth!= null),离线模式工作正常,但在这种情况下不行.

我做错了吗?知道我怎么能做这个工作?离线时规则(依赖于其他节点)评估如何工作?

解决方法

Firebase实时数据库安全规则始终在服务器端进行评估.这可以防止恶意客户端绕过这些规则.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...