我正在尝试根据时间限制查询我的Firebase。我正在使用附加的this blog post关注jsFiddle。
问题是我得到了一个空白的firebaseArray回来了。
var currentTime = (new Date).getTime();
var twentyFoursHoursAgo = currentTime - 86400000;
//scoresRef is defined as new Firebase(http://myfirebase.firebaseio.com/scores)
scoresRef.on('value', function (dataSnapshot) {
var summaryScores = $firebaseArray(scoresRef.orderByChild('timestamp').startAt(twentyFoursHoursAgo).endAt(currentTime));
$scope.summaryScores = summaryScores;
console.log(summaryScores);
}
这个想法是,当用户添加更多分数时,阵列将会改变。然后我可以对它进行不同的数据操作(如平均值等)。这样,应用程序上可以显示24小时运行平均值。
这就是Firebase中的数据:
我做错了什么?我知道数据就在那里。
答案 0 :(得分:2)
不确定这是否能回答你的问题,但我能做的最好的事情就是向你展示一些有用的东西。
我添加了这个数据结构:
{
"-Jy5pXbn5RpiK1-5z07O": {
"timestamp": 1441076226561
},
"-Jy5pZJsYvsmv_dMtCtn": {
"timestamp": 1441076173543
},
"-Jy5paWbkU6F8C6CEGpj": {
"timestamp": 1441076181550
},
"-Jy5pbc0pJ1I5azenAi5": {
"timestamp": 1441076247056
},
"-Jy5pfnMDKExW2oPf-D-": {
"timestamp": 1441076204166
},
"-Jy5pgk55ypuG9_xICq-": {
"timestamp": 1441076268053
},
"-Jy5phVgU2hDE_izcR8p": {
"timestamp": 1441076271163
},
"-Jy5pilBteGhu05eMWQI": {
"timestamp": 1441076215315
}
}
然后用这段代码查询:
var ref = new Firebase('https://stackoverflow.firebaseio.com/32321406');
var startAt = 1441076265715;
var endAt = startAt + 15000;
var query = ref.orderByChild('timestamp')
.startAt(startAt)
.endAt(endAt);
query.on('value', function(snapshot) {
console.log(snapshot.val());
});
哪个输出:
{
-Jy5pgk55ypuG9_xICq-: {
timestamp: 1441076268053
},
-Jy5phVgU2hDE_izcR8p: {
timestamp: 1441076271163
}
}
警告我应该为timestamp
添加索引规则。
jsbin:http://jsbin.com/qaxosisuha/edit?js,console
如果您尝试将查询结果绑定到AngularJS视图,请执行以下操作:
$scope.items = $firebaseArray(query);
使用AngularFire时不要尝试使用console.log
来监控进展情况。而是将其添加到您的HTML中:
<pre>{{ items | json }}</pre>
这将打印项目并在数据异步加载和更新时自动更新。
请注意,这可能是浏览Firebase AngularFire programming guide的好时机,它以一种非常容易理解的方式解释this last bit和更多主题。