2016-09-15 4 views
0

我々は次のオブジェクトがある場合:特定の子供の周りの子供を、好ま​​しくは1つのクエリで読み込むための最良の戦略は何ですか?

{ 
    "child01": { 
    "rating": 1 
    }, 
    "child02": { 
    "rating": 2 
    }, 
    "child03": { 
    "rating": 3 
    }, 
    "child04": { 
    "rating": 4 
    }, 
    "child05": { 
    "rating": 5 
    }, 
    "child06": { 
    "rating": 6 
    }, 
    "child07": { 
    "rating": 7 
    } 
} 

を目的は、好ましくは、1つのクエリで、例えば特定の子の前の2と次の2人の子供、4に等しい定格を持つ子供を得ることです。

期待される結果は次のとおりです。

child02 
child03 
child04 (The child of interest) 
child05 
child06 

私の最初の推測では、使用していた:

ref.orderByChild('rating').equalTo(4).limitToFirst(3).limitToLast(4) 

しかし、我々が

があり、同じ時間に両方の制限を使用することはできませんようです私が監督している1つのリクエストでこれを照会する方法はありますか?

そうでない場合は、これを達成するための最良の戦略は何でしょうか?

おかげ

答えて

1

のは、あなたがこの完全なJSONを持っているとしましょう:

{ 
    "child01": { 
    "rating": 1 
    }, 
    "child02": { 
    "rating": 3 
    }, 
    "child03": { 
    "rating": 3 
    }, 
    "child04": { 
    "rating": 3 
    }, 
    "child05": { 
    "rating": 5 
    }, 
    "child06": { 
    "rating": 3 
    }, 
    "child07": { 
    "rating": 7 
    } 
} 

あなたは3に等しい定格を持つ最初の3人の子供をしたい場合は、クエリをしたい:

ref.orderByChild('rating').equalTo(3).limitToFirst(3) 

子02

child03

child04

あなたは同じことをしたいが、child3から始まる場合:

ref.orderByChild('rating').startAt(3, 'child03').limitToFirst(3) 

child03

child04

child06

あなたは child3後に次の3人の兄弟が欲しい場合は210

、あなたは、単に行うことができます。

ref.orderByKey().startAt('child03').limitToFirst(3) 

child03

child04

child05

作業コードについて、http://jsbin.com/noziri/edit?js,console

+0

こんにちはフランク、私は私の質問で十分に明確ではなかった。私はこの時間を自分自身によく説明してほしいと思って質問を編集しました。一言で言えば、1つのクエリを持つ特定の子の前後両方のネイバーにクエリを実行できますか?(上の説明より良い) – GV3

+1

**および**の後には、単一のクエリで子を取得することはできません。それには2つの質問があります。 –

関連する問題