javascript - 如何将 Firebase 子项中的值排序到其余值?

标签 javascript html arrays firebase

在我的 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 子项并将每个标题和日期推送到一个数组,然后将其附加到我的 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")...

关于javascript - 如何将 Firebase 子项中的值排序到其余值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31910140/

相关文章:

javascript - Javascript 中对象的 "state"是什么意思?

javascript - 保存更新的网页

javascript - Materialise CSS 选择下拉菜单

javascript - 将输入推送到数组列表并用新的内容更新内容

c++ - 如何从 std::strings 数组中检索特定元素作为 LPCSTR?

Javascript - 检查传入对象的嵌入数组值

javascript - 浏览器/HTML 强制从 src ="data:image/jpeg;base64..."下载图像

javascript - 新的 Office 2013 Javascript API 限制

javascript - 如何使用 jquery 检查有效性来验证表单

html - 设置主体宽度会改变 div 的绝对定位