首页 > 解决方案 > 如何合并 Firebase 实时数据库安全规则?

问题描述

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

".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"
      }
    }
  } 
}

在此处输入图像描述

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

标签: androidfirebasefirebase-realtime-databasefirebase-security

解决方案


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

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

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


推荐阅读