如何合并Firebase实时数据库安全规则?

时间:2020-04-09 15:03:51

标签: android firebase firebase-realtime-database firebase-security

我有多个根节点,所有这些节点的安全性规则如下

".read": "auth.uid == uid"
".write": "auth.uid == uid"

不是一次又一次地重复相同的代码,而是如何合并以下代码?

{
"rules": {
    "node_1": {
       "$uid": {
           ".read": "auth.uid == uid"
           ".write": "auth.uid == uid"
      }
   },
   "node_2": {
      "$uid": {
          ".read": "auth.uid == uid"
          ".write": "auth.uid == uid"
      }
   },
   "node_3": {
      "$uid": {
          ".read": "auth.uid == uid"
          ".write": "auth.uid == uid"
      }
    }
  } 
}

enter image description here

fetchUserProfile = FirebaseDatabase.getInstance().getReference( Constants.FB_PROFILE_INFO ).orderByKey().equalTo( mAuth.getUid() );

1 个答案:

答案 0 :(得分:0)

您可以使用变量,就像现在使用$ uid:

{
"rules": {
  "$node": {
     "$uid": {
       ".read": "auth.uid == $uid"
       ".write": "auth.uid == $uid"
     }
  }
}

仅当您可以肯定地知道所有顶级节点都具有相同的结构时,这才有意义。如果没有,您可能需要以不同的方式组织它们。节点名称没有部分字符串匹配。