Попытка сортировки базы данных Firebase не работает

1

Я пытаюсь сортировать дату битвы по дате, но она не работает.

У меня есть структура данных firebase в этом формате Изображение 174551

Я использую эту функцию для вызова узла

 var awardsref = CatalogueDB.ref("cageawards/" + mycagecode).orderByChild('Awarddate');

    awardsref.on('value', Awardstable, errData);

это выход

Изображение 174551

есть ли работа по сортировке данных на основе этого формата даты?

Теги:
firebase

2 ответа

3
Лучший ответ

Как отметил @GerardoHerrera, Firebase не поддерживает сортировку по дате. Однако, если вы анализируете даты и конвертируете их в миллисекунды на основе эпохи UNIX, вы должны иметь возможность сортировать их лексикографически в соответствии с этим.

const date1 = new Date("04-07-2018").getTime();
date1; // 1523084400000

const date2 = new Date("06-02-2018").getTime();
date2; // 1527922800000

Поскольку date1 меньше даты2, он будет сортироваться как до даты2 в порядке возрастания. Храните эти преобразованные миллисекундные значения времени в своей Firebase, и вы сможете отсортировать их набор данных.

например

"7MFD4" {
  ...
  "SPE7L018P1428" {
    "Awarddate": "04-07-2018",
    "AwarddateMS": 1523084400000
    ...
  }
  ...
}

Затем выполните orderByChild('AwarddateMS').

  • 1
    Это лучший подход на мой взгляд. Я использую его в своем приложении Firebase, работает как надо.
4

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

И вся сортировка производится по лексикографическому порядку.

Поэтому вам может потребоваться сортировка на стороне клиента по вашим собственным методам.

Есть еще одна должность, где вы можете найти объяснение того, как сортировать по дате здесь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню