设计firebase DB进行过滤

时间:2017-05-23 16:38:48

标签: firebase firebase-realtime-database angularfire2

我在Web应用程序中使用Firebase和AngularFire4。该模型相对简单,但我在找到正确的设计方法时遇到了麻烦。

我有两个集合:placescountries,如下所示:

地方

 "places" : {
   "-Kjx7NhHnyZNIZbxvzx4" : {   
      "name" : "Dereck beer",
      "type" : "Bar"   
      "location" : {
          "cityName" : "Kagoshima",
          "country" : {
             "code" : "JP",
             "id" : 110,
             "name" : "Japan"
             },
             "streetName" : "892-0842 Higashisen"
        },
       "modifiedOn": 121211321321
     }
    //... More data here...
  }

国家

"countries" : {
   "110" : {
           "code" : "JP",
           "id" : 110,
           "name" : "Japan"
          }
  }

目前在Web应用程序中我显示了地点列表,我可以导航到每个地方的详细视图。我还可以显示这些地方所属的国家/地区(我在国家/地区集合中创建新条目,如果尚未存在,则在创建/更新新地点时)。

但是我想通过某些属性过滤场所,例如按类型。我尝试使用AngularFire docs中的以下查询,但它不起作用:

constructor(private db: AngularFireDatabase) {
     var query = {
        orderByChild: 'modifiedOn',
        equalTo: { 
           value: 'Bar', 
           key: 'type' }
        };

         this.db.list("/places", query).subscribe( data => {
              //All places are returned, and not only the one of type = "Bar"
         });
 }

如果可能的话,我想避免this approach并过度复制我的馆藏,只是为了能够查询它们。

1 个答案:

答案 0 :(得分:0)

应该是

var query = {
    orderByChild: 'type',
    equalTo: 'Bar'
};

orderByChildequalTo是firebase中的一对,它与sql查询不同