按日期排序异步对象
Order async objects by date
我有 Angular 5 + Firebase 应用程序,我从 Firebase 列表中获取项目并使用 *ngFor 将它们设置到视图中。
<a routerLink="post/{{post.url}}" *ngFor="let post of (posts | async)">
<h2>{{ post?.title }}</h2>
<span>{{ post?.date }}</span>
</a>
我的每个项目都有一个 "Date" 字段,格式为 "dd.mm.yyyy"。如何将它们设置为按日期排序的组件视图(从最新到旧)?
如何从 Firebase 获取帖子:
getPosts(): Observable<any[]> {
return this.db.list('posts').snapshotChanges().map(changes => {
return changes.map(c => ({
key: c.payload.key,
...c.payload.val() }));
});
}
您的日期为 "dd.mm.yyyy"
,这是一种天生难以排序的日期格式。使用这种格式,您必须在客户端上执行 sorting/filtering。
如果您以 ISO-8859 格式存储日期(例如 yyyy-mm-dd
),您可以让 Firebase 处理 sorting/filtering:
this.db.list('posts', ref => ref.orderByChild('date'))
另见 AngularFire2 documentation on queries。
请注意,这只会按 升序 顺序对项目进行排序,因此从最旧到最新。如果你想让它们下降,你要么必须在客户端中反转,要么存储一个反转的值。在后一种情况下,我建议存储倒置时间戳而不是字符串,例如
"negativeTimestamp": -1523753371440
有关这方面的更多信息,请参阅我对
的回答中的链接
我有 Angular 5 + Firebase 应用程序,我从 Firebase 列表中获取项目并使用 *ngFor 将它们设置到视图中。
<a routerLink="post/{{post.url}}" *ngFor="let post of (posts | async)">
<h2>{{ post?.title }}</h2>
<span>{{ post?.date }}</span>
</a>
我的每个项目都有一个 "Date" 字段,格式为 "dd.mm.yyyy"。如何将它们设置为按日期排序的组件视图(从最新到旧)?
如何从 Firebase 获取帖子:
getPosts(): Observable<any[]> {
return this.db.list('posts').snapshotChanges().map(changes => {
return changes.map(c => ({
key: c.payload.key,
...c.payload.val() }));
});
}
您的日期为 "dd.mm.yyyy"
,这是一种天生难以排序的日期格式。使用这种格式,您必须在客户端上执行 sorting/filtering。
如果您以 ISO-8859 格式存储日期(例如 yyyy-mm-dd
),您可以让 Firebase 处理 sorting/filtering:
this.db.list('posts', ref => ref.orderByChild('date'))
另见 AngularFire2 documentation on queries。
请注意,这只会按 升序 顺序对项目进行排序,因此从最旧到最新。如果你想让它们下降,你要么必须在客户端中反转,要么存储一个反转的值。在后一种情况下,我建议存储倒置时间戳而不是字符串,例如
"negativeTimestamp": -1523753371440
有关这方面的更多信息,请参阅我对