【发布时间】:2017-03-14 12:23:06
【问题描述】:
我有一个在离线模式下使用 Firebase 数据库的应用(通过调用 FirebaseDatabase.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) 不会返回任何内容 - 也不是错误,不是值,只是挂起,直到我再次打开互联网连接。
我确保在离线之前检索了两个节点,因此我确定有问题的节点和持有访问信息的节点已被缓存。
对于其他具有简单规则的节点,例如 (auth != null) 离线模式可以正常工作,但在这种情况下则不行。
我做错了吗?知道如何使这项工作吗?离线时规则(依赖于其他节点)评估如何工作?
【问题讨论】:
标签: android firebase firebase-realtime-database