Как объединить правила безопасности Firebase Realtime Database? - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть несколько root узлов и правила безопасности для всех этих узлов такие же, как показано ниже

".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 голосов
/ 09 апреля 2020

Вы можете использовать переменную, так же, как вы сейчас используете $ uid:

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

Это имеет смысл, только если вы точно знаете, что все узлы верхнего уровня имеют одинаковую структуру , Если они этого не сделают, возможно, вам придется организовать их по-другому. Частичные совпадения строк для имен узлов отсутствуют.

...