【发布时间】:2018-06-13 07:04:18
【问题描述】:
我有一个 Firebase 数据库,它存储按日期排序的寄存器。日期的每一部分都是一个键。例如,对于日期 2017-12-01,集合是这样的:
2017 {
12 {
01 {
...registers
},
02 {
...registers
}
}
}
我认为提出这种结构的人(不是我)试图避免集合占用很大的维度,这很好,但是:
我必须进行查询以过滤日期范围内的所有结果。选择初始化日期和完成日期,您必须将所有寄存器存储到其中。
我是这样写的:
for (let index_year in results) {
if (parseInt(index_year) >= from_year && parseInt(index_year) <= to_year) {
for (let index_month in results[index_year]) {
if(parseInt(index_month) >= from_month && parseInt(index_month) <= to_month) {
for (let index_day in results[index_year][index_month]) {
if(parseInt(index_day) >= from_day && parseInt(index_day) <= to_day) {
items = results[index_year][index_month][index_day];
for (let id in items) {
console.log(items[id])
}
}
}
}
}
}
}
当所选日期在同一年内时,这可以正常工作。但是,例如,如果您选择日期范围,例如:2017-12-01 到 2018-01-31,则脚本根本不会返回结果。
你能想出一个更好的脚本来进行这个查询吗?有人做过类似的事情吗?
【问题讨论】:
-
你能和我们分享一个你的json的真实例子吗?也排序了吗?
标签: javascript firebase object firebase-realtime-database filter