Firebase按日期排序的值从今天开始不起作用
如何获取按日期字段值排序的数据?我想根据他们的开始现在()的字段值显示所有事件?我不认为这会很难,但我无法让它正常工作。Firebase按日期排序的值从今天开始不起作用
我的火力点的数据是:
"events" : { "-KwX5oG6TYNWWhLYC5rx" : {
"ends" : "2018-01-04T23:30:47.071Z",
"starts" : "2018-01-02T23:30:47.062Z",
"title" : "Event 1"
},
"-L0Id2D34D2Sd2T5oyXX" : {
"ends" : "2017-12-27T23:30:39.566Z",
"starts" : "2017-12-26T23:30:39.552Z",
"title" : "Event 2"
}
}
的代码查询火力数据:
const today = new Date().toISOString(); const ref = FirebaseRef.child("events").orderByChild('starts').startAt(today);
return ref.on('value', (snapshot) => {
const events = snapshot.val() || {};
// DO SOMETHING
});
我试图存储数据Unix时间戳以及代替ISO字符串,仍然没有奏效。
回答:
最有可能的问题是由于您对查询结果做了snapshot.val()
的事实。当您从Firebase数据库请求有序数据时,您会得到三件事:密钥,值和项目顺序。
当您在快照上调用val()
时,将返回该值的JSON表示形式,该表示形式仅具有键和值的空间。由于JSON对象中的属性顺序未定义,因此结果的顺序未定义(尽管大多数浏览器按键显示它们)。
为了解决此问题,使用Snapshot.forEach()
遍历结果的快照:
return ref.on('value', (snapshot) => { var events = [];
snapshot.forEach((child) => {
events.push(child.val());
});
console.log(events);
});
以上是 Firebase按日期排序的值从今天开始不起作用 的全部内容, 来源链接: utcz.com/qa/260484.html