2016-06-16 22 views
2

で他の二つの値の間のクエリ値IがFirebaseに次のような構造を持っている場合:Firebase

{ 
    "images": { 
    "first_image": { 
     "url": "https://ima.ge/first_image", 
     "uploader": "john", 
     "start": "1465920841", 
     "end": "1466920841" 
    }, 
    "second_image": { 
     "url": "https://ima.ge/second_image", 
     "uploader": "louis", 
     "start": "1465920987", 
     "end": "1476920987" 
    }, 
    "third_image": { 
     "url": "https://ima.ge/third_image", 
     "uploader": "peter", 
     "start": "1465920990", 
     "end": "1484920990" 
    } 
    } 
} 

は、例えば現在のタイムスタンプは、「開始」と「終了」の間にあるすべての画像を照会することが可能です?したがって、現在のタイムスタンプ(Unixエポックからのミリ秒)が1475920987である場合、タイムスタンプが開始範囲と終了範囲にないため、second_imagethird_imageではなくfirst_imageを返します。

他のstackoverflowの質問では、複数のクエリが不可能であると指摘しているので、これは不可能です。だから私は投票システムをしたい場合は、ユーザーが他の人が投票することを許可するかどうかを決めることができる場合、ユーザーに投票可能な画像だけを表示することは可能ですか?複数のクエリが許可されていない場合でも?

私はiOSとAndroid Firebase SDKを使用していますが、言語固有の回答は必要ありません。

+0

が、私は今それを見つけることができません。

は、だからあなたのような何かを必要としています。そこに解決策があるとは思わない。 Firebaseのクエリは単一のプロパティでしかフィルタリングできないという問題があります。そのため、探しているフィルタリングを可能にする方法で、2つの値を1つのプロパティに結合する方法を見つける必要があります。言ったように:私は当時のものを考えることはできませんでしたが、他の誰かが今回解決策を考え出すかもしれません。 –

+0

最適ではないかもしれませんが、フィルタにネストされたクエリを使用することができます。たとえば、すべてをendで検索し、2番目のクエリでフィルタリングします。 –

答えて

0

queryStarting(atValue:)queryEnding(atValue:)の両方を1つのクエリで使用できます。同様の問題は、数ヶ月前にありました

let query = Database.database().reference().child("images") 
    .queryStarting(atValue:<startTimestamp>) 
    .queryEnding(atValue:<endTimestamp>)