2016-10-25 3 views
0

У меня есть модель коллекции, которая выглядит следующим образом:Firebase как сортировать коллекцию через createdAt поле?

enter image description here

Как сортировать запрос от последних к старому через createdAt поля.

До сих пор я пытался

db.ref('accounts') 
    .startAt() 
    .orderByChild('createdAt') 
    .once('value') 
    .then(function(snap){ 
     // do shits here... 
    }) 

Но я получаю данные, старые сверху.

  1. января
  2. февраля
  3. марта

Но я хочу

  1. марта
  2. февраля
  3. января
+0

вы можете изменить ваш список после получения, но это лучше, чтобы получить обратное от firebase http://stackoverflow.com/a/3963075/3496570 или http://stackoverflow.com/a/10766502/3496570 – Nepster

+0

Тех являются java-решениями, ну в любом случае спасибо за идею :) @Nepster – CENT1PEDE

+0

попробуйте limitToLast как http://stackoverflow.com/a/33484784/3496570 или http://stackoverflow.com/a/38024909/3496570 – Nepster

ответ

1
  1. Нет способа получить элементы, отсортированные по убыванию в базе данных firebase. Поэтому вам нужно отсортировать их по возрастанию и изменению массива на вашем языке программирования.

  2. Если вы хотите отсортировать их по времени, вы должны использовать timestamp вместо datetime как строку. В этом случае вы получите неправильный порядок, потому что они фактически сравниваются как строки. Например: Представьте себе две даты: 2016-10-14T02:30:59.653Z, 2016-10-2T02:30:59.653Z. В качестве дат сначала один больше, но в виде строк (лексикографически) второй - больше.

+0

Огромное спасибо! :) – CENT1PEDE

+0

!!!! добро пожаловать !!!! –

+0

@Zura: Похоже, что времена находятся в формате ISO-8601, для чего требуются ведущие нули, в частности, чтобы гарантировать, что строки можно лексикографически упорядочить. –

Смежные вопросы