说我有大量数据,就我而言,我有传感器每分钟将温度读数发送到名为“日志”的集合。
结构是这样的:
logs
|_(Auto UID)
|_sensor_id: 1
|_timestamp:
|_data: 30 <----like 30 degrees celsius
因此,我在带有过滤器的折线图中显示了此结果,以仅显示最后2小时。 当我单击以增加过滤器以显示最近4小时时,我今天要做的是查询:
db.collection('logs')
.orderBy('timestamp', 'asc')
.where('sensor_id', '==', sensor.id)
.where('timestamp', '>', new Date(Date.now() - this.periodRange * 1000)) <--periodRange being the selected filter
.onSnapshot(CALLBACK);
问题在于,每次执行此操作时,我都必须一次又一次地下载内容,例如,如果我已经有最近的2小时,并且想要显示更大的范围(例如4个小时),那么我将重新下载最新的内容2h,而不是重新利用所有数据。
如果我从4h更改为2h,我也只想显示数据而不是再次获取所有数据。
我考虑过使用逻辑(JS)进行检查,但是我想知道是否可以使用Firebase查询以及所有其他方法(例如使用离线数据?)