如何在Firebase中有效查询?

时间:2017-04-11 12:13:03

标签: javascript firebase firebase-realtime-database nosql

我在Realtime DB中有超过2000个产品。您可以看到产品结构 以下

enter image description here

但问题是我需要查询3个WHERE子句。

  

我需要获得一个项目WHERE CID = C09&& MID = S03&& SID = S03

我提到了以下问题Query based on multiple where clauses in firebase

我已经开始研究第一个解决方案了。但C9类产品有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 个答案:

答案 0 :(得分: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());
  });
});