Я пытаюсь создать сайт, который использует базы данных Firebase для хранения информации о пользователях. Я хочу использовать уникальные имена пользователей. У меня есть два индекса: один для пользователей и другой для имен пользователей.Правила базы данных Firebase для уникальных имен пользователей
Моя база данных структурирована следующим образом:
users {
$uid {
username: "username1",
gender: "xyz"
email: "xyz"
}
},
usernames {
"username1": $uid"
}
Пользователи утверждают, имя пользователя с их $ UID.
Это мои правила:
{
"rules": {
"users": {
"$uid": {
".write": "auth !== null && auth.uid === $uid",
".read": "auth !== null && auth.uid === $uid",
"username": {
".validate": "
!root.child('usernames').child(newData.val()).exists() ||
root.child('usernames').child(newData.val()).val() == $uid"
}
}
},
"usernames" : {
".write": "!data.exists() && auth!= null",
".validate": "newData.val() == auth.uid" <---- I can't get this too work
}
}
}
При настройке имени пользователя при $ UID проверяет индекс USERNAMES поэтому имя пользователь может быть записано только с именем пользователя не используются или тот, который имеет собственный $ UID.
Мне нужны только данные, в которых значение является аутентифицированным пользователем uid, а ключ является именем пользователя. Я не могу заставить это работать. Я подозреваю, что я неправильно использую newData(). Val(). Моя инструкция проверки не работает.
Я бы хотел избежать использования пользовательских токенов, но я открыт для любых предложений. Заранее спасибо.
Извините, если это объяснение слишком вытянуто, это мой второй пост в StackOverflow.
Редактировать # 2 Я сделал некоторые исследования из того, что я могу сказать, и все, что я могу найти в документах, говорит о необходимости использовать .child() перед .val(), но мне нужно .child взять переменную вместо задайте имя пользователя.
Вы говорите, что вы не можете заставить его работать, но вы не Не говори, как он не работает. Выполняется ли это или проходит проверку независимо от значения? – cartant
Я с картой здесь: на первый взгляд правила выглядят хорошо. Что не удается? Для чего-то подобного это помогает увидеть текущий JSON (как текст, без скриншота) и операцию записи, которая терпит неудачу. –
Извините за отсутствие ясности. В настоящее время я отказываюсь от проверки на имена пользователей. –