В настоящее время у меня есть следующие правила в моей базе данных, которые в основном (а) позволяют пользователям вводить свои данные, если они еще этого не сделали (это впервые) -> !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
, который работает, но в обход других правил.
Если вы также хотите разрешить пользователю удалять свои данные, вы можете добавить || !newData.exists()
к правилу. Так:
"$userID": {
".write": "!data.exists() || !newData.exists || ..."
}