Программно я смог реализовать правила и запрос на стороне клиента для моей базы данных в реальном времени, который может определить, существует ли Имя пользователя в таблице пользователей или нет. Перед созданием правила ".indexOn": "username" я получал предупреждение о том, что клиент загружает все данные и фильтрует их на стороне клиента.
У меня вопрос, что именно делает ".indexOn"? Я больше не получаю это предупреждение, поэтому мне любопытно, что сейчас отправляется клиенту? Это только имена пользователей и ничего больше, что отправляется и фильтруется?
Почему фильтрация / запросы не выполняются на сервере Firebase и вместо этого отправляется полученный пользователь, не будет ли это более эффективным / безопасным?
Мой запрос
db.database.ref(`/users`).orderByChild('username').equalTo(control.value)
.once("value").then(res => {
return res.exists() ? {usernameTaken : true} : null;
})
и мои данные структурированы как:
"users": {
"UID": {
"username" : "exampleName"
}
}
Просто пытаюсь лучше понять, как / что происходит, спасибо!
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.