Firebase结构
Periods
+Period1
+Period10
+Period2
+Period3
+Period4
我正在获得它的价值。但我希望按Period1, Period2, Period3..,Period10
答案 0 :(得分:0)
参考: https://firebase.google.com/docs/database/web/lists-of-data#data-order
使用orderByKey()对数据进行排序时,按键以升序返回数据。
具有可以解析为32位整数的键的子项首先排序,按升序排序。 接下来是以字符串值作为键的子项,按字典顺序按升序排序。
您可以避免将“Period”作为冗余,因为它从表中隐含并直接使用数字ID(不是firebase推荐)或使用push来生成firebase原生的密钥(ID)。
答案 1 :(得分:0)
Firebase数据库按字典顺序对字符串进行排序。按字母顺序Period10
出现在Period2
之前。
为了确保词典顺序也与您要查找的数字顺序相匹配,您可以考虑填充数字:
Periods
+Period001
+Period010
+Period002
+Period003
+Period004
使用此填充,词典顺序与您要查找的数字顺序相匹配。当然,填充量取决于您实际预期的最大数量。
或者,您只需在每个子节点中存储一个带有数字值的Period
属性,然后对其进行排序。在这种情况下,你也可以使用推送ID作为密钥,正如亚历克斯所说:
Periods: {
-Laaaaaa: {
Period: 1
},
-Laaaaab: {
Period: 10
},
-Laaaaac: {
Period: 2
},
-Laaaaad: {
Period: 3
},
-Laaaaae: {
Period: 4
}
}
现在您可以查询ref.orderByChild("Period")
,并且将按照想要的数字顺序返回子项。