使用可选的key参数限制firebase equalTo查询

时间:2017-05-03 15:28:51

标签: javascript firebase firebase-realtime-database angularfire angularfire2

我有一种感觉,我可能已经从SQL背景中了解了这个功能。文档很少,我无法找到一个好的例子或解释。 我正在寻找https://github.com/angular/angularfire2/blob/master/docs/4-querying-lists.md中对以下内容的澄清:

  

1 Firebase SDK支持startAt的可选键参数,   当按子,值或优先级排序时,endAt和equalTo。您可以   使用包含的对象文字指定关键参数   价值和关键。例如:startAt:{value:'some-value',key:   'some-key'}。

我想使用此可选键参数限制我的按时间戳排序的值查询(orderByChild),以仅将结果限制为具有指定值的子键。

this.angularFireDatabase.list('/items', {
  query: {
    orderByChild: 'uploadedOn_',
    equalTo: { key: 'user_uid', value: 'fSXX9twkttYqoS67mcRUmPawIep1' }
  }
});

// JSON 
{
  "items" : {
    "-KijNTXRKV5rjXEA7NdO" : {
      "uploadedOn_" : -1493296081615,
      "user_uid" : "fSXX9twkttYqoS67mcRUmPawIep1"
    },
    "-KijNoB4MivU4Ts6XgUV" : {
      "uploadedOn_" : -1493296169733,
      "user_uid" : "fSXX9twkttYqoS67mcRUmPawIep1"
    },
    "-KijbTMBydwQexbbErlk" : {
      "uploadedOn_" : -1493300012491,
      "user_uid" : "EAsIjLDFPRZDTq97qGQQyS7sBul1"
    }
  }
}

也许,我试图模仿SQL子句的位置,而不是我应该以不同的方式构造我的数据。 看来这个可选的key参数只能是项目自己的密钥。 在我的示例中,它是常规自动生成的Firebase推送密钥(例如"-KijNTXRKV5rjXEA7NdO")。 但是在这种情况下,如果结果将始终是单个项目,那么我很困惑将equalToorderByChild一起使用的用例是不使用可选key 1}}参数。

1 个答案:

答案 0 :(得分:1)

如果您执行ref.orderBy("prop").equalTo("value", "key"),则会提供与ref.child("key")相同的结果。 equalTo()的第二个参数基本上没用(与startAt()endAt()不同,它可用于切片范围。

另见: