从firebase javascript中获取并排序混合字符

时间:2018-02-01 07:28:07

标签: javascript firebase firebase-realtime-database

Firebase结构

Periods
 +Period1
 +Period10
 +Period2
 +Period3
 +Period4

我正在获得它的价值。但我希望按Period1, Period2, Period3..,Period10

排序

2 个答案:

答案 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"),并且将按照想要的数字顺序返回子项。