我正在使用的数据的基本结构是:
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是否提供了一种简单的方法来实现这一目标?
答案 0 :(得分:2)
无法在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"
}
}
}