火力地堡 - 如何写提取数据多orderByChild? [英] Firebase - How do I write multiple orderByChild for extracting data?

查看:285
本文介绍了火力地堡 - 如何写提取数据多orderByChild?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

火力地堡? - 我怎样写多个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆