首页 > 解决方案 > 我可以写入数据,但无法在 Firebase 中读取

问题描述

我是火力基地的新手。我对 Firebase 安全规则有疑问。我可以将数据写入 firebase 数据库,但无法读取写入的数据。我的数据库看起来像 -

user|
    |_uid(auto-generated)
         |
         |_name:Bob
         |_score:100
         |_email:bob@gmail.com

我的 firebase 数据库规则看起来像 -

"user":{
       "$uid":{
              "uname":{

".read":"$uid=== auth.uid",
".write":"$uid=== auth.uid"
                    },
              "score":{
".read":"$uid=== auth.uid",
".write":false
                    },
              "email":{
".read":"$uid=== auth.uid",
".write":"$uid=== auth.uid"
                      }
}}

我已经用模拟器进行了测试,一切(读写)都很好。但是尽管我登录了一个帐户,但无法从我的应用程序中读取。当我将所有读写设置为真正的上$uid节点时,我的应用程序中的所有读写也都可以。但我只想让授权人阅读

我已经在 stackoverflow 上搜索过,但没有解决方案。

对不起我的英语写作能力。

标签: androidfirebase

解决方案


当您使用实时数据库时,处理此问题的最佳方法是创建一个child authorized,然后将所有授权的 uid 保存在该子项中,然后将您的规则设置如下:`“规则”:

 {
    ".read": true,
    ".write": "root.child('authorized').hasChild(auth.uid)"
  }
}`

你可以参考这个项目来查看示例实现


推荐阅读