如何将 Firebase child 中的值排序到其余值?
How to sort value inside a Firebase child to the rest?
在我的 firebase 中,我有几个事件,每个事件都有标题和日期字符串:
{
"events": {
"-JscIDsctxSa2QmMK4Mv": {
"date": "Friday, June 19, 2015",
"title": "Event Two"
},
"-Jswff0o9bWJeDmUoSA9": {
"date": "Friday, June 12, 2015",
"title": "Event One"
},
"-JscIs_oMCJ9aT6-JWDg": {
"date": "Monday, August 10, 2015",
"title": "Event Three"
}
}
}
在我的 javascript 代码中,我检索 events
child 并将每个标题和日期推送到一个数组,然后将其附加到我的 html 页面并显示内容.
var ref = new Firebase("https://demo.firebaseio.com/events");
var build = new Array("");
ref.orderByChild("date").once("value", function(snapshot) {
snapshot.forEach(function(data) {
var tmp = data.val();
eventMonth = tmp.date.split(" ")[1];
build.push('<h3>'+tmp.title+'</h3><p>Date: '+tmp.date+'</p>');
});
$("#event-content").append(build.join(''));
orderByChild
似乎不起作用,我如何按日期对事件进行排序,使其看起来如下所示:
活动一:2015 年 6 月 12 日,星期五
活动二:2015 年 6 月 19 日,星期五
活动三:2015 年 8 月 10 日星期一
Firebase 没有日期类型,因为 JSON 没有。所以它不知道这些字符串中存储了日期。出于排序目的,您必须存储表示这些日期的原始类型,并在与字符串或数字进行比较时给出所需的排序顺序。
例如:时间戳。鉴于 date
是一个 JS 日期对象,在保存时为每个对象添加 sortDate: date.getTime()
。
{
"events": {
"-JscIDsctxSa2QmMK4Mv": {
"date": "Friday, June 19, 2015",
"sortDate": 1434697200000,
"title": "Event Two"
},
"-Jswff0o9bWJeDmUoSA9": {
"date": "Friday, June 12, 2015",
"sortDate": 1434092400000,
"title": "Event One"
},
"-JscIs_oMCJ9aT6-JWDg": {
"date": "Monday, August 10, 2015",
"sortDate": 1439190000000,
"title": "Event Three"
}
}
}
然后:
ref.orderByChild("sortDate")...
在我的 firebase 中,我有几个事件,每个事件都有标题和日期字符串:
{
"events": {
"-JscIDsctxSa2QmMK4Mv": {
"date": "Friday, June 19, 2015",
"title": "Event Two"
},
"-Jswff0o9bWJeDmUoSA9": {
"date": "Friday, June 12, 2015",
"title": "Event One"
},
"-JscIs_oMCJ9aT6-JWDg": {
"date": "Monday, August 10, 2015",
"title": "Event Three"
}
}
}
在我的 javascript 代码中,我检索 events
child 并将每个标题和日期推送到一个数组,然后将其附加到我的 html 页面并显示内容.
var ref = new Firebase("https://demo.firebaseio.com/events");
var build = new Array("");
ref.orderByChild("date").once("value", function(snapshot) {
snapshot.forEach(function(data) {
var tmp = data.val();
eventMonth = tmp.date.split(" ")[1];
build.push('<h3>'+tmp.title+'</h3><p>Date: '+tmp.date+'</p>');
});
$("#event-content").append(build.join(''));
orderByChild
似乎不起作用,我如何按日期对事件进行排序,使其看起来如下所示:
活动一:2015 年 6 月 12 日,星期五
活动二:2015 年 6 月 19 日,星期五
活动三:2015 年 8 月 10 日星期一
Firebase 没有日期类型,因为 JSON 没有。所以它不知道这些字符串中存储了日期。出于排序目的,您必须存储表示这些日期的原始类型,并在与字符串或数字进行比较时给出所需的排序顺序。
例如:时间戳。鉴于 date
是一个 JS 日期对象,在保存时为每个对象添加 sortDate: date.getTime()
。
{
"events": {
"-JscIDsctxSa2QmMK4Mv": {
"date": "Friday, June 19, 2015",
"sortDate": 1434697200000,
"title": "Event Two"
},
"-Jswff0o9bWJeDmUoSA9": {
"date": "Friday, June 12, 2015",
"sortDate": 1434092400000,
"title": "Event One"
},
"-JscIs_oMCJ9aT6-JWDg": {
"date": "Monday, August 10, 2015",
"sortDate": 1439190000000,
"title": "Event Three"
}
}
}
然后:
ref.orderByChild("sortDate")...