火力地堡 - 如何写提取数据多orderByChild? [英] Firebase - How do I write multiple orderByChild for extracting data?
问题描述
火力地堡? - 我怎样写多个orderByChild提取数据
Firebase - How do I write multiple orderByChild for extracting data?
我期待在那里2场等于我传递怎样获取数据。
I'm looking to get data where 2 fields equal what I'm passing in.
这里是我的code的例子:
this.refApp
.orderByChild('userUid')
.startAt(uid).endAt(uid)
.orderByChild('jobId')
.startAt(jobId).endAt(jobId)
.on('value', (snap) => {
//This currently doesnt get returned.
});
在上面的例子中我没有得到任何编译器错误和code似乎罚款。
但是,我很难codeD,这样它会返回一个对象,其中uid和作业ID都等于数据。
In the above example I dont get any compiler errors and code seems fine. However, I hard coded the data so that it would return an object where uid and jobid are equal to.
我能得到这个一orderByChild工作,但是当我做两像上面它似乎没有做任何事情。
I can get this to work for one orderByChild but when I do two like above it doesnt seem to do anything.
我使用的是打字稿,angular2和火力点。
I'm using typescript, angular2 and firebase.
任何想法?
推荐答案
您只能使用一个排序方法。
要查询更多,你需要重新考虑你的数据结构。您当前的结构可能看起来是这样的:
To query more, you'll need to rethink your data structure. Your current structure probably looks something like this:
{
"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"
}
}
}
在这种结构下你的局限性指数掉一个孩子的关键。
With this structure you're limited to index off of one child key.
现在考虑这个结构:
{
"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"
}
}
}
}
此结构明确创建于 UID
的索引。所以,现在,如果你想获得用户的所有作业,你可以这样写查询:
This structure explicitly creates an index on uid
. So now if you want to get all the jobs by user you can write this query:
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());
这篇关于火力地堡 - 如何写提取数据多orderByChild?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!