2016-09-22 104 views
0

我正在构建一个项目,我想从使用Firebase 3.0的查询中提取列表。我对此很新,但我想我的问题有一个简单的答案。firebase 3.0查询

我有这样的结构:

requests : { 
     luke1 : { 
       1 : { 
        .../... 
        users : { 
           0 : { 
            username : joseph, 
            answered : 0 
            } 
           1 : { 
            username : mark, 
            answered : 1 
            } 
           } 
        } 
       } 
      } 

基本上登录的用户(luke1)将请求发送到多个用户(约瑟夫和标记),并让说我登录为用户:约瑟夫。 我想要得到哪些未被回答尚未

var ref = firebase.database().ref("requests/"); 

我想知道我可以编写查询发送到约瑟夫请求的列表。

感谢您花时间阅读本文,如果您需要更多信息,请告诉我。

回答

0

要实现这种查询,您需要在变量中存储用户的currentID。完成后,只需尝试类似下一个查询:

var ref = firebase.database().ref("request").child(currentUserId).child("users"); 

如果我没有错,它会返回您所需的查询。希望它能帮助你!

0

当使用Firebase(以及大多数NoSQL数据库)时,您通常会发现最终会根据应用程序想要使用它的方式对数据进行建模。

因此,对于您当前的数据模型,您可以很容易地获得特定用户发送的请求。

ref.child("requests/luke1").on("child_added", ... 

但是你还不能很容易地找到请求发送到一个特定用户。为了让轻松查询这些数据,你可以倒数据结构添加到您的数据库:

received: { 
    joseph: { 
     0: { 
      from: luke1 
      answered: 0 
     } 
    } 
} 

现在你可以很容易地得瑟与悬而未决的请求:

ref.child("received/joseph").orderByChild("answered").equalTo(0).on("child_added", ... 

您最初的反应是可能的,这数据重复的情况很糟糕。但是在NoSQL数据库中它确实很常见。

模型结构有很多种方法。对于这个话题的一个很好的介绍,我推荐这篇关于NoSQL data modeling的文章。