firebase选择计数1天
假设我有一天的一些数据和另一天的另一组数据。这些数据将存储在同一个表中。是否有一种方法可以让我为每天选择计数:比如说,第一天有20个计数,第二天有13个计数?最简单的方法是将另一个子对象添加到对象中。调用它firebase选择计数1天,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,假设我有一天的一些数据和另一天的另一组数据。这些数据将存储在同一个表中。是否有一种方法可以让我为每天选择计数:比如说,第一天有20个计数,第二天有13个计数?最简单的方法是将另一个子对象添加到对象中。调用它date,并将日期另存为yyyyymmdd。这将为每个对象提供一个日期戳 然后您可以执行如下查询: firebase.database() .ref('/Button_Log') .orderByChild('date') .equalTo('20170818') .once
date
,并将日期另存为yyyyymmdd
。这将为每个对象提供一个日期戳
然后您可以执行如下查询:
firebase.database()
.ref('/Button_Log')
.orderByChild('date')
.equalTo('20170818')
.once('value')
.then(snapshot => {
console.log(snapshot.numChildren()); // Number of records
});
var startOfDay = new Date();
startOfDay.setHours(0,0,0,0);
var endOfDay = new Date();
endOfDay.setHours(23,59,59,999);
firebase.database()
.ref('/Button_Log')
.orderByChild('timestamp')
.startAt(startOfDay)
.endAt(endOfDay)
.once('value')
.then(snapshot => {
console.log(snapshot.numChildren()); // Number of records
});
否则,如果你不想要一个新的孩子,你可以试试这样的东西
firebase.database()
.ref('/Button_Log')
.orderByChild('time')
.startAt('2017-08-10')
.endAt('2017-08-10 23:59:59')
.once('value')
.then(snapshot => {
console.log(snapshot.numChildren()); // Number of records
});
编辑
Thomas建议您使用UNIX时间戳,因为它更灵活
保存数据时,将创建的时间戳设置为firebase.database.ServerValue.timestamp
,这将保存时间戳
然后您可以执行如下查询:
firebase.database()
.ref('/Button_Log')
.orderByChild('date')
.equalTo('20170818')
.once('value')
.then(snapshot => {
console.log(snapshot.numChildren()); // Number of records
});
var startOfDay = new Date();
startOfDay.setHours(0,0,0,0);
var endOfDay = new Date();
endOfDay.setHours(23,59,59,999);
firebase.database()
.ref('/Button_Log')
.orderByChild('timestamp')
.startAt(startOfDay)
.endAt(endOfDay)
.once('value')
.then(snapshot => {
console.log(snapshot.numChildren()); // Number of records
});
将解决问题的“按时间查询”字段。如果使用unix时间戳作为int而不是日期字符串,则允许您在以后需要时也指定时间=>更大的可伸缩性。如果要跨范围查询,该怎么办。所以第一天有20个;第2天有8天;第3天有10天;第4天为0;第5天为0;第6天有1天;第7天有11天。所以,如果我有一个页面,当前显示1天,但用户每周点击,我需要显示7天的全部计数?