我有以下FIREBASE实时数据库结构Structure
我希望在客户端显示按日期排序的这些数据,如下所示
- 1-9-2021
- 13-07-2021
- 10-12-2021
- 10-1-2022
- 11-1-2022
这是我在客户端显示数据的代码:
'getLogsAction(操作){此列表日期=[];此.选定=真;
console.log('action: ' + action);
console.log('tab: ' + this.tabName);
console.log('solution: ' + this.service.idSolution);
this.afs
.list('logs/' + this.tabName + '/' + this.service.idSolution + '/' + action)
.snapshotChanges()
.subscribe(ok => {
this.logsInfos = [];
ok.forEach(elem => {
this.listeDate.push(elem.key);
});
});
}`
"action"是我的节点"Connection",它包含其他节点,如"12 - 1 - 2022、13 - 7 - 2021 ...",这些节点包含每个节点的元数据。
在我的客户端视图中,代码显示如下:Display in app所以显示的内容与数据库中结构的顺序完全一样。
这里真正的麻烦是我必须排序"键节点"而不是子节点,我知道它存在orderByKey(),但我不知道如何在我的例子中使用它。
我如何按升序对这些数据进行排序("above"表示最近的日期,"below"表示最早的日期)?
谢谢!
1条答案
按热度按时间ttisahbt1#
数据中的键可能读起来像日期,但在数据库中它们实际上是字符串。实时数据库对字符串值lexicographically排序。
要得到您想要的结果,唯一的方法是将日期存储为符合您需要的字符串格式,即字典顺序与时间顺序相同的字符串格式。最常用的格式是ISO-8861,它是:
因此,为了满足这种用例,您必须以这种格式存储数据,唯一的选择是按原样检索数据,然后在代码中重新排序数据。
另见: