Как отсортировать данные списка лидеров в базе данных Firebase по запросу на конкретную дату? - PullRequest
0 голосов
/ 12 октября 2018

Я храню табло вместе с датой в миллисекундах и запрашиваю дату, используя методы startAt и endAt.И это дает мне всех пользователей в этом диапазоне дат, теперь я хочу отсортировать пользователей по баллам, но я не могу этого сделать.

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

К сожалению, вы не можете достичь этого с базой данных Firebase в реальном времени, не внеся некоторых изменений в структуру вашей базы данных.В отличие от Cloud Firestore , база данных реального времени не имеет возможности выполнять фильтрацию по нескольким свойствам (используя «несколько предложений WHERE», как можно сказать в терминах SQL).

Если вы хотите проверить совпадения для нескольких свойств, вам нужно создать составное свойство, которое может содержать комбинацию искомых свойств.В качестве примера вам понадобится строковое значение, которое содержит score и date вместе, как объяснено в моем ответе из этого post .

0 голосов
/ 12 октября 2018

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

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

Приоритетом в данном конкретном случае может быть оценка пользователя (если она числовая, она будет автоматически отсортирована для вас).Затем вы можете использовать запрос .limit(10), чтобы получить список 10 лучших пользователей.

Вам также нужно будет реализовать события child_added, child_changed и child_removed для обработки случаевновый пользователь входит в топ-10, кто-то меняет позицию, а кто-то покидает список топ-10 соответственно.

Вы можете прочитать и узнать больше об этом здесь: https://www.firebase.com/tutorial/#example/leaderboard

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