Javascript 我怎样才能按孩子的孩子点菜?如果不可能,我有什么选择?

Javascript 我怎样才能按孩子的孩子点菜?如果不可能,我有什么选择?,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我正在处理的数据的基本结构是: Claims: { "6B7CBFB4-16EA" : { "E4A5DB45-C1DE" : { "ID" : 3, "Store" : "Staples" } } 我还在此firebase上设置了一些示例数据以及一个JSFIDLE 我希望能够通过ID或商店订购 前两个级别是随机生成的标识符。目前正在做的是,我们正在检索Claims ref下的所有数据,然后在客户端对其进行排序,但随着应用程序的增长,这变得太多,

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

Claims: {
  "6B7CBFB4-16EA" : {
    "E4A5DB45-C1DE" : {
      "ID" : 3,
      "Store" : "Staples"
    }
  }
我还在此firebase上设置了一些示例数据以及一个JSFIDLE

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

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


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

在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"
      }
    }
  }

无法在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"
      }
    }
  }