我的应用允许用户向firebase提交一些数据条目。最初,我的数据集看起来像
-forms
-company1
-approvedForms
-$key
-name: 'John Doe'
-date_epoch: 1487590100
-$key2
-name: 'Taylor Smith'
-date_epoch: 1487590101
-$key3
-name: 'Sam Cesky'
-date_epoch: 1487590102
我有一个页面,用户可以输入开始和结束日期来搜索日期范围内的数据。 我如何做它是标准的firebase方式,我将搜索开始和停止日期转换为纪元号然后调用以下函数
return ref.child('forms')
.child(companyId)
.child('approvedForms')
.orderByChild('date_epoch')
.startAt(startDateEpoch)
.endAt(endDateEpoch)
.once('value')
这一切都很好!然而,我开始怀疑......在10年之后说,我可能会在批准的表格下有一个巨大的名单。 为了论证,如果我搜索2020年1月31日到2020年2月1日的日期,我将强制firebase查看这2天查询的所有条目
所以我想到了另一个想法,即保存条目类似于以下我添加额外年/月的条目。请注意,月份和年份是从日期
生成的-forms
-company1
-approvedForms
-2017
-1
-$key
-name: 'John Doe'
-date_epoch: 1483228800
-$key2
-name: 'Taylor Smith'
-date_epoch: 1483228801
-2
-$key3
-name: 'Sam Cesky'
-date_epoch: 1485907200
在这种情况下,我可以通过查看分支来查询数据,例如forms / company1 / approvedForms / 2017/1
问题是,由于以下原因,这是一个非常尴尬的解决方案
所以问题是,我是否会更好地坚持使用原始方法,因为firebase旨在为一个节点中的大型数据集做到这一点? 或者对整个问题有更好的解决方法吗?