2016-12-13 6 views
0

Angular2とFirebaseを使ってプロジェクトを作成しています。作成日時順にAngularFire2アイテムを並べ替えます

私はデータベースを日付順に並べ替えることができます。しかし、私はこれをどのように達成できるかについては不明です。私は記事を見て、その実装を見た。 しかし、これを私のプロジェクトに実装する方法はわかりません。

ここでは、クエリを扱うコードを示します。私のFirebaseデータベースには、タイトル、内容、日付だけがあります(手動で日付を入力します)。

posts: FirebaseListObservable<any>; 
constructor(public navCtrl: NavController, public alertCtrl:AlertController, angFire: AngularFire) { 
this.posts= angFire.database.list('/Post',{ 
    query:{ 
    orderByChild: "date" 
    } 
}); 

すべてのヘルプは、ありがとう素晴らしいことです。ここ

JSON

{`"Post" : { 
    "-KYsuclduIKOVi6VXGmn" : { 
    "content" : "text goes here", 
    "date" : "12/12/16", 
    "title" : "Title" 
} 

}}

+0

現在のコードの問題点は何ですか?それは動作しませんか?それは何かを返しますか?アイテムはソートされていませんか?表示しようとしているJSONの最小限のスニペットをテキストとして共有し、スクリーンショットを表示しないでください。 Firebaseデータベースコンソールの[JSONエクスポート]リンクをクリックすると、簡単にこの情報を取得できます。 –

+0

申し訳ありませんが、私は投稿を作成し、自動的に日付を追加し、最新の日付の順番で最初に置くことができます。 (JSONを追加しました) – SGhaleb

+0

Firebaseには作成時に自動的に日付を追加するオプションがありません。あなた自身でそれを行う必要がありますが、あなたの投稿に既に 'content'と' title'を追加しているので、日付も追加しますか? ソートの詳細は次のとおりです:https://firebase.google.com/docs/database/web/lists-of-data#sort_data あなたの場合は、 'orderByChild'を使用できます。あなたの注文を "逆戻り"するオプションはありません。あなた自身でそれを行う必要があります(コードやテンプレートに 'reverse'を追加してください)。 –

答えて

3

だから私がしなければならなかったすべては、現在までにfirebase.database.ServerValue.TIMESTAMPを追加しました。これにより、firebaseデータベースにタイムスタンプが追加されます。

text:"Save Post", 
     handler: data => { 
     this.posts.push({ 
      title: data.title, 
      content: data.content, 
      date: firebase.database.ServerValue.TIMESTAMP 
     }) 
関連する問題