我已閱讀關於此的所有問題,但我仍未找到答案。所以不要將其標記爲重複。是否可以撤銷Firebase列表?
我正在使用AngularFire和Angular 2和Typescript。我正在使用FirebaseListObservable
從端點中提取最近24條記錄的列表。這裏是我的代碼:
import { Component } from '@angular/core';
import { AngularFire, FirebaseListObservable } from 'angularfire2';
@Component({
selector: 'story-list',
templateUrl: './story-list.component.html',
styleUrls: ['./story-list.component.scss']
})
export class StoryListComponent {
stories: FirebaseListObservable<any[]>;
constructor(af: AngularFire) {
this.stories = af.database.list('/stories', {
query: {
limitToLast: 24
}
});
}
}
這將返回24個最新的故事,如預期的列表,但是當我使它們在頁面上:
<p *ngFor="let story of stories | async">{{ story.title }}</p>
它顯示在頂部的最古老的故事,和最新的底部。我明白這是爲什麼,而且我並沒有聲稱這是一個問題,但我將如何扭轉這種情況?我希望能夠在查詢中反轉這一點,但如果這是不可能的,我會在渲染中以某種方式反轉它。
無論您的答案是什麼,請不要鏈接到文檔。沒有充分解釋這一點的AngularFire的文檔。我讀過每一個字。請提供真實的工作代碼。
然而,我絕對不會接受的一個解決方案是,在創建時在記錄中存儲否定日期,然後根據該日期進行排序。這是我聽過的最糟糕的解決方案,真正的數據庫系統將允許您在查詢中執行此操作。所以請不要建議。
如果您有任何想法,我將不勝感激。我不願意使用其他產品,因爲我喜歡Firebase。
我喜歡第一種方法,但會導致錯誤「Property'map'在類型'FirebaseListObservable''上不存在。 –
我認爲問題在於FirebaseListObservable不是數組,因此您無法對其執行類似數組的操作。 –
它會工作;發出的值是一個數組。這只是一個TypeScript/RxJS問題。很可能您需要導入'map'運算符來安撫TypeScript。我已經更新了答案。 – cartant