Firebase,如何在日期范围内对键进行排序

时间:2018-12-25 15:48:48

标签: javascript firebase firebase-realtime-database

我已在Firebase实时数据库中设置数据,如下所示:

键{        创立日期,        人气,        评分,        作者}

是否可以检索以下问题的答案:

  1. 上个月人气排名前50的游戏排在哪里?
  2. 本周排名最低的游戏是什么?
  3. 今天评分最高的游戏是什么?

回答一个可能会回答另一个,但是只是为了确保我把它们都放了。

1 个答案:

答案 0 :(得分:1)

所有这些都要求您考虑多个属性。而且,由于Firebase实时数据库只能对单个属性进行排序/过滤,因此如果不修改数据模型就无法执行这些操作。要获得良好的入门知识,请在此处阅读我的答案:Query based on multiple where clauses in Firebase

在这种情况下,每个节点需要三个额外的属性:

  1. 第一个查询的结合月份和流行度的属性。例如:"month_popularity": "201812_125"(如果流行度是125)。
  2. 结合了月份和评分的属性,用于第二个查询。例如:"week_rating": "2018w51_4"
  3. 第三个查询的包含日期和评分的属性。例如:"day_rating": "20181225_4"

使用这些属性,然后可以按所需的时间间隔进行排序,并过滤所需范围的值。例如,要获得本月排名前50的游戏:

ref.orderByChild("month_popularity").startAt("201812_").endAt("201812~")

~仅是ASCII中_之后的一个字符,请确保从本月开始不再返回结果。