Что делает индекс огненной базы под капотом? - PullRequest
0 голосов
/ 17 января 2019

Программно я смог реализовать правила и запрос на стороне клиента для моей базы данных в реальном времени, который может определить, существует ли Имя пользователя в таблице пользователей или нет. Перед созданием правила ".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"
    }
}

Просто пытаюсь лучше понять, как / что происходит, спасибо!

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

1 Ответ

0 голосов
/ 17 января 2019

Согласно документации по индексированию :

Firebase позволяет вам выполнять специальные запросы к вашим данным, используя произвольный дочерний ключ. Если вы заранее знаете, какими будут ваши индексы, вы можете определить их с помощью правила .indexOn в вашей Firebase Realtime Правила базы данных для повышения производительности запросов.

База данных реального времени не знает заранее всех видов запросов, которые вы, возможно, захотите выполнить. Он создает некоторые индексы заблаговременно, но вы должны сообщить ему, когда хотите запросить вложенные дочерние элементы с помощью orderByChild orderByValue.

Клиент не отправляет ничего другого. Вместо этого сервер теперь снабжен индексом, который может эффективно выполнять запрос, не заставляя клиента получать все данные и выполнять фильтрацию и упорядочение самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...