我有一个数据库列表,包含10,000多个记录,每个记录都有Email
和Date
键,并且Date
是一个时间戳。
使用orderByChild
无序检索数据来排序数据。代码段:
firebase.database().ref('users').orderByChild('Date').once('value').then((d)=>{
let users = d.val();
Object.keys(users).map(
k => console.log( new Date(users[k].Date) )
);
});
记录:
{
"users" : {
"-MNfAJqQps-t3tPexBXD" : {
"Date" : 1587827466215
},
"-MNfAO1PbkcLOqjjrk2o" : {
"Date" : 1593781601194
},
"-MNfAcnfCZ7bpEGO9lMX" : {
"Date" : 1588037833767
},
"-MNfAcnfCZ7bpEGO9lMY" : {
"Date" : 1590966701420
},
"-MNfAcngMq0yQfq-zJD7" : {
"Date" : 1574637809000
},
"-MNfAcngMq0yQfq-zJD8" : {
"Date" : 1565127290858
},
"-MNfAcnhU0gK2PfDRYdU" : {
"Date" : 1566914768371
},
"-MNfAcnhU0gK2PfDRYdV" : {
"Date" : 1580480141148
},
"-MNfAcnirZFlPnikmjA9" : {
"Date" : 1604432784043
},
"-MNfAcnirZFlPnikmjAA" : {
"Date" : 1563010563269
}
}
}
规则:
{
"rules": {
".read": "true",
".write": "false",
"users": {
".indexOn": "Date"
}
}
}
结果:
4/25/2020, 5:11:06 PM
7/3/2020, 3:06:41 PM
4/28/2020, 3:37:13 AM
6/1/2020, 1:11:41 AM
11/25/2019, 1:23:29 AM
8/6/2019, 11:34:50 PM
8/27/2019, 4:06:08 PM
1/31/2020, 4:15:41 PM
11/3/2020, 9:46:24 PM
7/13/2019, 11:36:03 AM
一旦调用d.val(),子节点的顺序就会丢失。因此,您应该d
使用forEach
before循环d.val()
。
firebase.database().ref('users').orderByChild('Date').once('value', d=> {
d.forEach(child => {
const child_data = child.val();
const date = child_data.Date;
console.log(new Date(date));
})
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句