firebase - Firebase 实时数据库:未能按时间戳对数据进行排序
问题描述
我有一个数据库列表,包含10000多条记录,每条记录都有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));
})
})
推荐阅读
- entity-framework-core - EF Core 5 HasDefaultValue FluentAPI
- flutter - 未处理的异常:类型 '(String) => Null' 不是类型 '((dynamic) => dynamic)?' 的子类型
- python - 仅当鼠标向上移动时,tkinter 事件 xy 鼠标位置错误值?
- python - Python中的plyer通知?
- c# - System.Text.Json.Serialization.JsonConverter
也为可为空的 DateTime 属性执行 - android - Android recyclerview 在数据更改后显示更多值
- javascript - 从promise回调函数节点js获取值
- javascript - 如何使用 react js 中的 put 请求将当前日期时间发送到 Rest Api?
- vba - 退货/成交量比和零退货比例的VBA代码
- python - 无法使用 chrome 在 Python Selenium 上加载我的个人资料