按键(节点)firebase实时数据库排序



我有以下FIREBASE实时数据库结构结构

我想在客户端按日期排序显示这些数据,如

  • 1-9-2021
  • 13-07-2021
  • 10-12-2021
  • 10-1-2022
  • 11-1-2022

这是我在客户端显示数据的代码:

' getLogsAction(行动){这一点。listdate = [];这一点。

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…,其中包含每个节点的元数据。

在我的客户端视图的代码给了我以下显示:在app中显示因此,显示的顺序与数据库中结构的顺序完全相同。

这里真正的麻烦是我必须排序"关键节点"而不是子节点。我知道它存在orderByKey(),但我不知道如何在我的情况下使用它。

我如何按升序排序这些数据('上面'获得最近的日期到'下面'获得最旧的日期)?

谢谢!

而数据中的键可能读起来像日期在数据库中,它们实际上是字符串. 实时数据库按字典顺序排序字符串值。

获得想要的结果的唯一方法是将日期存储在满足您需要的字符串格式中,即字典顺序与时间顺序相同的字符串格式。最常用的格式是ISO-8861,它将是:

"2022-09-01": ...,
"2022-10-01": ...,
"2022-10-03": ...

因此,为了满足这个用例,您必须以这种格式存储数据。唯一的替代方法是按原样检索它,然后在代码中重新排序数据。

也看到:

  • 按firebase
  • 范围查询
  • Firebase和Android:订单查询结果
  • 是否有一种方法在firebase android在一个范围内获取数据?

最新更新