【问题标题】:Getting Firebase Parents based on Child Values根据子值获取 Firebase 父级
【发布时间】:2015-11-19 16:31:36
【问题描述】:

假设我的firebase数据结构如下图所示:

我正在尝试根据settings 中的customerNumber 查询客户端。

我最近的尝试,我尝试了以下方法:

var number = register.number;

var ref = new Firebase(fbUrl+'/clients/');

ref.orderByChild("settings").orderByChild("customerNumber").equalTo(number).on("child_added", function(snapshot) {
   console.log(snapshot.key());
});

但显然你不能使用两个orderByChild() 函数。

那么我该怎么做呢?我已经构建了这个项目太多,现在无法改变我的结构,所以这不是一个选项或解决方案,目前是可行的。

我想根据父数据结构设置中的customerNumber匹配返回整个父数据。

【问题讨论】:

  • 试试ref.orderByChild("settings/customerNumber").equalTo(number).on(...。请参阅我们介绍该功能的博客文章:firebase.com/blog/2015-09-24-atomic-writes-and-more.html
  • @FrankvanPuffelen 我这样做时收到此错误:错误:Query.orderByChild 失败:第一个参数是无效键:“settings/customerNumber”。我需要更新我的 Firebase 版本吗?
  • 我更新了我的 firebase 版本。我现在有这个:ref.orderByChild("settings/customerNumber").equalTo(number).on("value", function(snapshot) { console.log(snapshot.val()); }); 这个控制台每次都记录 null。
  • @FrankvanPuffelen 有什么想法吗?
  • /clients/settings 不是有效路径。您需要将 /clients/client_id/settings/customerNumber 作为路径,其中 client_id 是上面的 uid 之一。 (-Kxxxyyy)。请复制并粘贴您的代码和结构,而不是图片。它为我们节省了大量尝试回答的时间。

标签: angularjs firebase angularfire


【解决方案1】:

我不确定为什么我留下的评论对你不起作用。这是我刚刚用来重现它的sn-p:

var ref = new Firebase('https://mine.firebaseio.com');
ref.child('clients')
   .orderByChild('settings/customerNumber')
   .equalTo('1234567890')
   .once('value', function(snapshot) { 
     console.log(snapshot.val()); 
   });

看到这个jsbin:http://jsbin.com/towewegapa/edit?js,console

【讨论】:

    【解决方案2】:

    您应该像 Firebase 在他们的文档中要求我们做的那样“首选扁平化数据”:structuring data in firebase

    您可以维护第二个索引,将客户编号与客户端中的 Firebasekey 映射

    【讨论】:

    • 阅读倒数第二行问题。
    • 对不起,我没有看到这个:'那我该怎么做呢?我建立这个项目的方式太多,现在无法改变我的结构,所以这不是一个选项或解决方案,在这一点上是可能的。这是我的错
    • @ilyass:通常最好将数据展平,但我认为这在这里不太适用。嵌套设置可作为命名键进行寻址,这比您拥有列表列表(...的列表列表)时问题更少。
    猜你喜欢
    • 2020-11-23
    • 2018-09-01
    • 2012-01-18
    • 1970-01-01
    • 2017-12-08
    • 2022-01-11
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多