我有一个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的日期范围,则该脚本将不返回任何结果。
您能否想到更好的脚本来执行此查询?是否有人曾经做过类似的事情?