【问题标题】:firebase 3.0 on queryfirebase 3.0 查询
【发布时间】:2017-01-30 20:19:24
【问题描述】:

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

我有这个结构:

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

基本上,登录用户 (luke1) 向多个用户(joseph 和 mark)发送请求,并假设我以用户 joseph 的身份登录。 我想获得一个发送给 joseph 的请求列表,但尚未回复

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

我想知道如何编写查询。

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

【问题讨论】:

    标签: angularjs ionic-framework firebase firebase-realtime-database


    【解决方案1】:

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

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

    如果我没记错的话,它会返回你想要的查询。

    【讨论】:

      【解决方案2】:

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

      因此,使用您当前的数据模型,您可以轻松获取 特定用户发送的请求。

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

      但您还不能轻松找到发送给特定用户的请求。为了方便查询该数据,您可以在数据库中添加倒排数据结构:

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

      现在您可以通过以下方式轻松获取 joseph 未答复的请求:

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

      您最初的反应可能是这种数据重复很糟糕。但它实际上在 NoSQL 数据库中很常见。

      还有很多方法可以对这种结构进行建模。有关该主题的精彩介绍,我推荐NoSQL data modeling上的这篇文章。

      【讨论】:

        猜你喜欢
        • 2017-03-25
        • 1970-01-01
        • 2016-05-01
        • 2013-09-18
        • 1970-01-01
        • 1970-01-01
        • 2018-04-12
        • 2020-08-19
        相关资源
        最近更新 更多