Сортировка запроса в реальном времени sortByChild по символу, а не по значению - PullRequest
1 голос
/ 20 сентября 2019

Выполнение запроса к базе данных в реальном времени

DatabaseReference mReference = mDatabase.getReference("Cards/" + language + "/" + gameTitle); Query query = mReference.orderByChild("rank"); query.addValueEventListener

предполагается, что оно будет отсортировано по rank и получено как значения 1/2/3/4/5/6.Вместо этого он возвращает 1/10/11/12/13/14/15/16/17/18/19/2/20/21 и т. Д. Вот как выглядит иерархия (извините за русский язык, но нет английскогопока) enter image description here Похоже, сортировка по первому символу вместо целого значения

1 Ответ

1 голос
/ 24 сентября 2019

Предполагается отсортировать его по рангу и дать значения 1/2/3/4/5/6.Вместо этого он возвращает 1/10/11/12/13/14/15/16/17/18/19/2/20/21

Это нормальное поведение, так как вы заказываетерезультаты в соответствии со свойством rank, которое имеет тип String, а не число.Когда вы заказываете строки, элементы упорядочены лексикографически .

Существует два способа решения этой проблемы: либо воспользуйтесь моим решением из приведенного выше ответа, либо измените тип вашей собственностина номер.По моему мнению, так как все эти значения являются числами, это решение, которое вы должны использовать.

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