Firebase日期范围查询

时间:2014-10-12 09:42:16

标签: firebase

我正在尝试使用startAt()endAt()根据特定日期范围获取数据。 数据设置为时间戳优先级。

我的结构如下:

"sessions" : {
    "1413099157" : {
      ".priority" : 1413099338,
      "max_position" : "100",
      "unique" : "1",
      "views" : "1"
    },
    "1413105026" : {
      ".priority" : 1413105210,
      "max_position" : "100",
      "unique" : "1",
      "views" : "1"
    },
    "1413105029" : {
      ".priority" : 1413105210,
      "max_position" : "100",
      "unique" : "1",
      "views" : "1"
    },
    "1413105035" : {
      ".priority" : 1413105219,
      "max_position" : "100",
      "unique" : "1",
      "views" : "1"
    },
    "2818847947" : {
      ".priority" : 1413099248,
      "max_position" : "100:quiet",
      "views" : "3"
    }
}

我的疑问:

fbRef.child('sessions').on('value', function(session) {
    var sessions = session.val();
    for (var sess in sessions) {
        fbRef.child('sessions/'+sess)
            .startAt(1412538604)
            .endAt(1413143404)
            .on('value', function(sess_data) {
                 console.log('Object: ', sess_data.val());
                 console.log('Priority: '+sess_data.getPriority());
        });
    };
});

我的值和优先级都为null: Console.log() outputs

如果我删除了startAt()endAt()

,则查询效果很好

我一直在寻找答案,找不到任何解决办法,不确定是什么问题......

欢迎任何帮助!

1 个答案:

答案 0 :(得分:1)

我不确定你为什么选择上面的代码构造,但这似乎更简单,并且没有问题:

var ref = new Firebase('https://yourfirebase.firebaseio.com/');
ref.child('sessions')
  .startAt(1413105210)
  .endAt(1413105219)
  .on('child_added', function(snapshot) {
    console.log(snapshot.exportVal());
  });

请参阅http://jsbin.com/qunonu/1/edit?js,console