Я пытаюсь сортировать дату битвы по дате, но она не работает.
У меня есть структура данных firebase в этом формате
Я использую эту функцию для вызова узла
var awardsref = CatalogueDB.ref("cageawards/" + mycagecode).orderByChild('Awarddate');
awardsref.on('value', Awardstable, errData);
это выход
есть ли работа по сортировке данных на основе этого формата даты?
Как отметил @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')
.
Согласно следующей странице: Как упорядочиваются данные запроса, дата не рассматривается ни в каком порядке сортировки. Он сначала заказывает нулевые значения, затем ложные значения, затем true, числа, строки и, наконец, объекты.
И вся сортировка производится по лексикографическому порядку.
Поэтому вам может потребоваться сортировка на стороне клиента по вашим собственным методам.
Есть еще одна должность, где вы можете найти объяснение того, как сортировать по дате здесь