2016-11-01 12 views
3

私はFirebase 2.4.2を使用しています。私は次のようなデータベースを持っています:Firebaseは特定のレコードのインデックスを取得し、検索します

"items": { 
    "item1": { 
     "details": { 
     "name": "item 1", 
     "rate": 5 
    }, 

    "item2": { 
     "details": { 
     "name": "item 2", 
     "rate": "4" 
     } 
    } 

    "item3": { 
     "details": { 
     "name": "item 3", 
     "rate": "6" 
     } 
    } 
    } 

私は数千のアイテムを持っており、それらをすべてテーブルにロードしたくありません。むしろ、ユーザーがクリックしたアイテムとともにトップ10をロードしたいと思います。だから、あなたがページ内にいる場合:/items/details/item2、データベースの上位10項目(料金に基づく)とitem2が表に表示されます。また、のインデックスをitem2としたい場合は、をご注文ください。私たちは、帯域幅-if通常何

ind id  rate 
1 item56 100 
2 item33 98 
... 
143 item2 13 

は、私が取得、それらを注文したいのですが、(例えばAngularFireを使用して)次のようにすべてのデータを取得することではありませんissue-しかし

var ref = fbutil.ref('items').orderByChild('details/rate'); 
return $firebaseArray(ref); 

ですtop10を入力し、その率に基づいてitem2(この場合)とそのインデックス(143)を取得します。

どうすればいいですか?

答えて

0
// For getting top 10 
var ref = fbutil.ref('items').orderByChild('details/rate').limitToFirst(10); 
return $firebaseArray(ref); 

// For getting single 
var ref = fbutil.ref('items').orderByChild('details/rate').equalTo(13); 
var singleItem = $firebaseObject(ref); 

firebase.database.Referenceクラスがサポートしている方法を確認するには、次のリンクをクリックしてください。

https://firebase.google.com/docs/reference/js/firebase.database.Reference

+0

おかげZuraが、これは私の質問に答えていません。問題は、トップ10と特定のアイテムを取得することではありません。問題は、データベースからデータ全体を取得せずに、その「アイテム」を(その上位10アイテムをソートするために使用されたのと同じメトリックに基づいて)データベースに基づいて取得することです。 –

+0

あなたはなぜこのインデックスを望んでいるのか分かりますか?あなたの最終目的は何ですか? –

+0

何千ものアイテムがあるとします。私は誰かが商品をクリックするたびにそれらをロードしたくない。むしろ、上位のアイテムと現在のアイテムのランキングに基づいてそのアイテムのランキングを表示したいと考えています。 –

関連する問題