firebase数据库的滤波设计

firebase数据库的滤波设计,firebase,firebase-realtime-database,angularfire2,Firebase,Firebase Realtime Database,Angularfire2,我在web应用程序中使用Firebase和AngularFire4。这个模型相对简单,但我很难找到正确的设计方法 我有两个收藏:地点和国家,如下所示: 位置 "places" : { "-Kjx7NhHnyZNIZbxvzx4" : { "name" : "Dereck beer", "type" : "Bar" "location" : { "cityName" : "Kagoshima", "co

我在web应用程序中使用Firebase和AngularFire4。这个模型相对简单,但我很难找到正确的设计方法

我有两个收藏:
地点
国家
,如下所示:

位置

 "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"
          }
  }
国家

 "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应用程序中,我显示了位置列表,并且可以导航到每个位置的详细视图。我还可以显示地点所属的国家(我在创建/更新新地点时,在“国家/地区”集合中创建一个新条目(如果尚未存在)

然而,我想通过一些属性来过滤这些地方,比如通过类型。我尝试了以下查询,来自,但不起作用:

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"
         });
 }
如果可能的话,我想避免过度复制我的收藏,只是为了能够查询它们。

应该是这样的

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

orderByChild
equalTo
是firebase中的一对,它不同于sql查询

如果有反对票的原因,那就好了,这样人们就可以避免下一个问题的错误(如果有)。有时,对某些人来说似乎“显而易见”的问题,在直接面对时可能不那么明显,而在开发解决方案时,细节则被简单地“隐藏”。是的。。不加评论地投反对票是不礼貌的,特别是如果询问者的声誉超过1000,我会尝试一下,谢谢。但是,我希望使用:orderByChild:'modifiedOn'执行查询并按creationDate排序。根据angularFire docs的说法,使用可选的键/值属性应该是有效的。嗨,Faruk,我试过了,但仍然得到了全部结果(未过滤),我想在服务器端而不是客户端对数据进行排序。我想我必须在文档中进行更深入的挖掘。