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

Firebase по умолчанию упорядочивает данные из самых ранних, и мне нужно, чтобы они были упорядочены из самых последних.

Я использую метку времени для этого и, похоже, не работает.

 private void filldata() {
        mDatabase.child("Data").orderByChild("timestamp").addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot  snapshot, String s) {
                System.out.println("snapshot:" + snapshot.toString());
            }
}

Ответы [ 4 ]

0 голосов
/ 03 июня 2018

Ваш код правильный.Обычно предлагаемый способ заказа будет использовать отрицательную временную метку.

Однако Ранее я заметил, что firebase упорядочивает ваши результаты по временной отметке, как вы в настоящее время хотите, чтобы это делалось.Когда устройство получает результаты, оно переупорядочивает результаты по прибытии (подозрение).

Чтобы проверить это, попробуйте ограничить свои результаты с помощью функции .limitToLast(n), вы поймете, что хотя firebase вернет вам последние 10 (в порядке отметки времени), эти результаты не будут упорядоченыотметка времени.

Таким образом, наилучшим решением будет сохранение результатов Firebase в списке и переупорядочивание списка с помощью инструмента сортировки, такого как компаратор

0 голосов
/ 03 июня 2018

Я предлагаю использовать

mDatabase.child("Data").orderByKey().limitToLast(no_of_items_you_want)

Это даст вам список последних данных

Также, чтобы получить значение из использования снимка

snapshot.getValue(String.class);
0 голосов
/ 03 июня 2018

Вам не нужно использовать orderByChild() здесь, в вашем случае, потому что сама firebase генерирует уникальный ключ, основанный на отметке времени, поэтому вы можете просто использовать orderByKey() в своем запросе, и вы получите свои данные в последнем порядке.

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

0 голосов
/ 03 июня 2018

Поскольку orderByChild() сортирует данные только в порядке возрастания, вам следует сохранить дополнительный элемент данных в вашем дочернем узле со значением timestamp*(-1), а затем отсортировать (порядок) по этому элементу данных.

...