2017-04-11 5 views
0

私はリアルタイムDBに2000以上の製品を保有しています。あなたは enter image description hereFirebaseで効果的にクエリを実行するには?

以下

製品の構造を見ることができますが、問題は、私は3つのWHERE句に照会する必要があるということです。私は私が最初のソリューションに取り組んできました下記の質問Query based on multiple where clauses in firebase

を言及しているCID = C09 & & MID = S03 & & SID = S03

項目を取得する必要があります

。しかしカテゴリーC09には1000以上の製品があります。私は1000の製品をダウンロードして20の製品を表示しています。

私はQuerybaseを使用しようとしました。しかしそれはissueを持っています。

したがって、私に効果的なクエリを効果的に提案してください。

CODE

var firstCat = firebase.database().ref('S01/Products').orderByChild("productCID").equalTo("C09"); 

    firstCat.once("value") 
    .then(function (snapshot) { 
     snapshot.forEach(function (childSnapshot) { 
     var key = childSnapshot.key; 

     var MID = childSnapshot.child("productMID").val(); 
     var SID = childSnapshot.child("productSID").val(); 

     if (MID == "M03" && SID == "S03") { 
      var ProductID = childSnapshot.child("productID").val(); 
      var name = childSnapshot.child("productName").val(); 
      var unit = childSnapshot.child("productUnit").val(); 
      var status = childSnapshot.child("productStatus").val(); 
      var productMRP = childSnapshot.child("productMRP").val(); 
      var price = childSnapshot.child("productSellingPrice").val(); 
      var buying_price = childSnapshot.child("productBuyingPrice").val(); 

     } 
     }); 
    }); 

答えて

1

あなたは既に項目のキーに必要な値をコードしているようです。あなたが一致する子供を見つけるためにキーを使用することができます、ということを考える:

var ref = firebase.database().ref('S01/Products'); 
var query = allProducts.orderByKey().startAt("C09M03S03").endAt("C09M03S04"); 
query.on("value", function(snapshot) { 
    snapshor.forEach(function(child) { 
    console.log(child.key, child.val()); 
    }); 
}); 
+0

どのように私はそれが私のリストの最後のカテゴリですので、S09は一切ENDATのIDを持っていない「C09M03S09」を問い合わせることができますか? – user3467240

+0

ちょうど 'startAt()'、または 'endAt("〜 ")'(これはあなたが使っていると思われるよりもASCIIテーブルの方が高い文字です)。 –

関連する問題