2016-07-16 14 views
1

私はFirebaseで次のJSON構造を有する:Firebase - 日付範囲内のオブジェクトを取得するにはどうすればよいですか?

{ 
    "-KGX6kYg1NO6d9hn-8um" : { 
    "phase" : "A", 
    "timestamp" : "12-18-2015 19:43:37" 
    }, 
    "-KGXOGSxa3vompZX9UO_" : { 
    "phase" : "B", 
    "timestamp" : "03-28-2016 15:28:21" 
    }, 
    "-KMUvszD-vm3Nu02sofd" : { 
    "phase" : "A", 
    "timestamp" : "04-03-2014 03:57:56" 
    } 
} 

は、日付の範囲で、タイムスタンプのキーによってオブジェクトをフィルタリングすることは可能です...例えば、私は1月からのタイムスタンプを持つオブジェクトを取得したいですか?今日の日付まで2015年可能であれば、日付でオブジェクトをフィルタリングするより良い方法は何ですか?私はiOSアプリケーションを開発しています。

ありがとうございました。

+4

日付形式ではなく、UNIX形式のタイムスタンプとしてタイムスタンプを保存できる方が良いでしょう。その場合、タイムスタンプに基づくフィルタリングは容易であろう。 – triandicAnt

答えて

2

スナップショットデータをtimestampで並べ替えることができ、データを取得する際の制限をtimestampと定義できます。 たとえば、あなたが特定のタイムスタンプtimestamp1からすべてのデータが欲しい、あなたの参照ハンドラは次のようになります。

let refHandle = tableRef.queryOrderedByChild("timestamp").queryEndingAtValue("some_time_stamp").queryLimitedToLast(kPostLimit + 1).observeEventType(FIRDataEventType.Value, withBlock: { (snapshot) in 
      for item in snapshot.children { 

      } 
     }) 

let refHandle = tableRef.queryOrderedByChild("timestamp").queryEndingAtValue("timestamp1").observeEventType(FIRDataEventType.Value, withBlock: { (snapshot) in 
      for item in snapshot.children { 

      } 
     }) 

あなたは次のようにqueryLimitedToLastまたはqueryLimitedToFirstを追加することによって、あなたがしたいレコード数をも適用することができます

また、Firebaseの一般的なSQLクエリーについては、次のようにpostを参照してください。

関連する問題