Ang*_*arM 10 firebase firebase-realtime-database angular
Firebase - 如何编写多个orderByChild来提取数据?
我正在寻找数据,其中2个字段与我传入的字段相同.
这是我的代码示例:
this.refApp
.orderByChild('userUid')
.startAt(uid).endAt(uid)
.orderByChild('jobId')
.startAt(jobId).endAt(jobId)
.on('value', (snap) => {
//This currently doesn't get returned.
});
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我没有得到任何编译器错误,代码似乎很好.但是,我对数据进行了硬编码,以便返回uid和jobid等于的对象.
我可以让这个为一个orderByChild工作但是当我像上面那样做两个时它似乎什么都不做.
我正在使用typescript,angular2和firebase.
有任何想法吗?
您只能使用一种订购方法.
要查询更多信息,您需要重新考虑数据结构.您当前的结构可能看起来像这样:
{
"key": {
"id_1": {
"userUid": "user_1",
"jobId": "job_1"
},
"id_2": {
"userUid": "user_1",
"jobId": "job_2"
},
"id_3": {
"userUid": "user_2",
"jobId": "job_3"
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用此结构,您只能使用一个子键索引.
现在考虑这个结构:
{
"key": {
"user_1": {
"id_1": {
"jobId": "job_1",
"userUid": "user_1"
},
"id_2": {
"jobId": "job_2",
"userUid": "user_1"
}
}
"user_2": {
"id_3": {
"jobId": "job_3",
"userUid": "user_2"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
此结构显式创建索引uid
.所以现在如果你想通过用户获得所有工作,你可以编写这个查询:
var ref = new Firebase('<my-firebase-app>');
var uid = 'user_1';
var userRef = ref.child('key').child(uid);
var query = userRef.orderByChild('jobId');
query.on('value', (snap) => console.log(snap.val());
Run Code Online (Sandbox Code Playgroud)
小智 6
orderByChild
在Firebase中进行多种计算的另一种方法是创建orderKey。
假设您的基地中有这个:
{
userId: {
firstName: 'Snow',
lastName: 'Jon',
birthYear: 283
}
}
Run Code Online (Sandbox Code Playgroud)
您要查询: userRef.orderByChild('firstName').equalTo('Jon').orderByChild('lastName').equalTo('Snow')
您需要像这样在用户上创建密钥:
{
userId: {
firstName: 'Snow',
lastName: 'Jon',
birthYear: 283,
orderName: 'JonSnow'
}
}
Run Code Online (Sandbox Code Playgroud)
因此,您可以这样查询: userRef.orderByChild('orderName').equalTo('JonSnow')
这也适用于startAt
和endAt
,如果你想查询所有的雪出生在一个范围之久。首先创建密钥:
{
userId: {
firstName: 'Snow',
lastName: 'Jon',
birthYear: 283,
orderNameYear: 'Snow283'
}
}
Run Code Online (Sandbox Code Playgroud)
这样就可以查询: userRef.orderByChild('orderNameYear').startAt('Snow280').endAt('Snow285')
这将返回出生在280和285之间的所有Snow。
归档时间: |
|
查看次数: |
14365 次 |
最近记录: |