Ниже приведена текущая структура моей базы данных, которую я использую для игры, которая содержит «комнаты», а внутри каждой комнаты «ходы».Ключ перемещения - это случайно сгенерированная строка, и я сохраняю номер хода, n в качестве свойства этого ключа.Мне нужно запросить базу данных, чтобы получить данные о перемещении для определенного номера перемещения n:
{
"rooms": {
"-LXU8-36ISMY8YZnI7fr": {
"moves": {
"-LXZv-7zMCZdrH7ffoWf": {"n": 1, "x": 532, "y": 242},
"-LXZv7LlQTkBEtls0PP2": {"n": 2, "x": 352, "y": 944}
}
}
}
}
И я достигаю этого следующим образом - если, например, мне нужно перейти n = 1, я делаю это:
moveRef = roomRef.child('moves').orderByChild("n").equalTo(1)
Мне не ясно из документации, выполняется ли фильтрация на сервере или все ли шаги будут загружены на клиент и затем отфильтрованы, что может показаться очень неэффективным.
Вот мой вопрос: будет ли эффективнее (в частности, меньше данных, передаваемых клиенту и, следовательно, дешевле) вместо этого установить имя ключа для каждого хода в качестве номера шага, например:
{
"rooms": {
"-LXU8-36ISMY8YZnI7fr": {
"moves": {
"1": {"x": 532, "y": 242},
"2": {"x": 352, "y": 944}
}
}
}
}
А затем запросите, ссылаясь на конкретный ход, который я хочу, например, чтобы получить ход 1:
moveRef = roomRef('/1');
Мне кажется, что это будет более эффективным, но я опасаюсь использовать этот метод, потому что яЯ уверен, что я где-то читал в документации, что делать это таким образом было плохой идеей.Спасибо.