База данных Firebase Realtime — разрешить пользователям удалять свои данные

В настоящее время у меня есть следующие правила в моей базе данных, которые в основном (а) позволяют пользователям вводить свои данные, если они еще этого не сделали (это впервые) -> !data.exists (б) позволяют им писать только если их новые значения меньше текущих. --> data.child('time').val() > newData.child('time').val() и, наконец, (c) разрешить им изменить свое имя пользователя --> data.child('userName') .val() != newData.child('userName').val()"

Все вышеперечисленное работает отлично, но теперь, благодаря политике магазина Google Play, я хочу, чтобы у пользователя была возможность удалить свои данные, если они этого хотят.

Я пробовал несколько решений, таких как data.exists(), но даже если это работает, это обходит мое другое правило о проверке значения, если оно меньше, и позволяет записывать значения, которые больше, чем существующее.

Можете ли вы помочь в этом, как добавить еще одно правило, которое позволит пользователю удалять свою запись более конкретно? userID и при этом все вышеперечисленное продолжает работать

Моя команда

var DBTaskWrite = DBReference.Child("Users").Child("3X3").Child(_userID).RemoveValueAsync();
{
  "rules": {            
    //".read": true,
      "Users" : {
           "3X3": {
              ".indexOn": ["time"],
             ".read": "data.exists()",
             "$userID": {
               ".write": "!data.exists()  || data.child('time').val() > newData.child('time').val() || data.child('userName').val() != newData.child('userName').val()"
             }
          }
       }
    }
  }

Пробовал data.exists, который работает, но в обход других правил.

Интеграция Angular - Firebase Analytics
Интеграция Angular - Firebase Analytics
Узнайте, как настроить Firebase Analytics и отслеживать поведение пользователей в вашем приложении Angular.
0
0
92
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы также хотите разрешить пользователю удалять свои данные, вы можете добавить || !newData.exists() к правилу. Так:

"$userID": {
  ".write": "!data.exists() || !newData.exists || ..."
}

Другие вопросы по теме