我有一种感觉,我可能已经从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"
)。
但是在这种情况下,如果结果将始终是单个项目,那么我很困惑将equalTo
与orderByChild
一起使用的用例是不使用可选key
1}}参数。
答案 0 :(得分:1)
如果您执行ref.orderBy("prop").equalTo("value", "key")
,则会提供与ref.child("key")
相同的结果。 equalTo()
的第二个参数基本上没用(与startAt()
和endAt()
不同,它可用于切片范围。
另见: