【问题标题】:How can I order by child of a child? What options do I have if this is not possible?如何按孩子的孩子订购?如果这是不可能的,我有什么选择?
【发布时间】:2016-05-31 00:39:47
【问题描述】:

我正在处理的数据的基本结构是:

Claims: {
  "6B7CBFB4-16EA" : {
    "E4A5DB45-C1DE" : {
      "ID" : 3,
      "Store" : "Staples"
    }
  }

我还在这个 firebase https://torrid-inferno-3290.firebaseio.com/Claims 和一个 jsfiddle https://jsfiddle.net/8j1zf7vd/ 上设置了一些示例数据

我希望能够通过 ID 或商店订购

前两个级别是随机生成的标识符。目前正在做的是我们正在检索 Claims ref 下的所有数据,然后在客户端对其进行排序,但是随着应用程序的增长,这变得太多了,因此我们需要在服务器端对其进行排序和限制。

如果这不可能并且我只能查询 Child,那么扁平化数据的最佳方法是什么?这将在一个大型生产应用程序上,因此会有大量数据需要移动。 Firebase 是否提供了一种简单的方法来实现这一点?

【问题讨论】:

    标签: javascript firebase firebase-realtime-database


    【解决方案1】:

    无法在 Firebase 数据库 API 中对动态孙子属性进行排序。这意味着您必须修改数据结构以匹配您的应用程序想要访问它的方式。

    这样做的一种方法是将孙辈存储在他们的 ID 下,而不是您现在使用的密钥:

    Claims: {
      "6B7CBFB4-16EA" : {
        "ID_3" : {
          "Key": "E4A5DB45-C1DE"
          "Store" : "Staples"
        }
      }
    

    如果您需要通过自己的键和 ID 获取数据,您可以在每个声明下存储一个迷你索引以允许查找:

    Claims: {
      "6B7CBFB4-16EA" : {
        "Key_E4A5DB45-C1DE": {
          "ID": 3
          "Store" : "Staples"
        },
        "keysByID": {
          "3" : {
            "Key": "E4A5DB45-C1DE"
          }
        },
        "keysByStore": {
          "Staples": {
            "Key": "E4A5DB45-C1DE"
          }
        }
      }
    

    【讨论】:

      猜你喜欢
      • 2018-09-01
      • 1970-01-01
      • 2012-05-22
      • 2021-07-24
      • 2018-03-05
      • 1970-01-01
      • 2014-03-27
      • 2012-12-13
      • 1970-01-01
      相关资源
      最近更新 更多