Я настоятельно рекомендую использовать Firebase Bolt для написания / компиляции правил безопасности базы данных Firebase.Структура данных может стать большой и сложной.Используя Язык болтов , вы сможете легко написать сложные правила доступа и структуры, которые можно будет повторно использовать для других шаблонов БД.
Ваши правила будут выглядеть примерно так:
path /comment/{postUid}/{commentUid} is Comment {
read() { true }
write() { isAuthor(this) || isAuthor(prior(this)) }
}
type Comment {
text : String,
username : String
}
isAuthor(value) { auth != null && value.username == auth.uid }
Обратите внимание на isAuthor(prior(this))
звонок.Это способ убедиться, что только автор может удалить комментарий.prior
функция возвращает данные в том виде, в каком они были сохранены до текущего события (создание, обновление или удаление).
После использования инструмента firebase-bolt для компиляции правил в формат JSON вы получите:
{
"rules": {
"comment": {
"$postUid": {
"$commentUid": {
".validate": "newData.hasChildren(['text', 'username'])",
"text": {
".validate": "newData.isString()"
},
"username": {
".validate": "newData.isString()"
},
"$other": {
".validate": "false"
},
".read": "true",
".write": "auth != null && newData.child('username').val() == auth.uid || auth != null && data.child('username').val() == auth.uid"
}
}
}
}
}