Правила Firebase: как предотвратить удаление с помощью SetValue () (android) - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть эта структура

 Events {
ID: {  //Event ID
   name: ... 
   image: ... 
}
}

Я бы хотел использовать правила для предотвращения этой команды:

Firebase.getInstance().getReference().child(Events).child(ID).setValue(null);

(например, если мой HashMap пуст и вместо setValue что-тоЯ просто установил значение на ноль (однажды я удалил всю свою базу данных из-за этого))

Но я все еще хочу быть в состоянии сделать это:

 Firebase.getInstance().getReference().child(Events).child(ID).removeValue();

У меня есть эти правилана данный момент:

"Events" : {
        "$Ev_key" : {
          ".write":"auth.uid!=null",
          ".read":"auth.uid != null",
          ".validate" : "newData.hasChildren(['name']) || newData.hasChildren(['image'])",


                "name" : {

                  ".validate" : "newData.isString() && newData.val().length < 25"
                },
                  "image" : {
                  ".validate" : "newData.isNumber() && newData.val() >= 0 && newData.val() <= 100"
                },




                  "$other": {
                                                        ".validate": false
                                                        }


        }
      },

=> они позволяют мне:

-.... child ("имя"). setValue ("Something") -.... child ("image"). setValue ("Something")

- создать HashMap с именем, изображением и обновить дочерние элементы.

/ !! \ Но, тем не менее, если я попытаюсь сделать Events / ID и отправить nullJson, то симуляция будет успешной, и в ней будет написано «Валидация проигнорирована». И все же я понятия не имею, как дифференцировать setValue ()и методы removeValue (), поскольку я могу только устанавливать, обновлять и читать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...