我每分钟都会存储用户的lat, lng, timestamp
。
我只想读取基于timestamp
的部分数据。我试过下面的查询,没有用。还要检查我的示例数据库的附件。
function queryLocations(){
var ref = firebase.database()
.ref('user-locations/' + currentUID)
.orderByChild('timestamp')
.startAt('1501061958000')
.endAt('1501062154000')
.on("child_added",function(data){
c = c+1;
locationCountElement.textContent = '' + c;
});
firebaseLocRef = ref;
}
因此,我输入了
startTimestamp
和endTimestamp
。我只需要timestamp
和startTimestamp
之间的endTimestamp
行。我的Firebase规则如下所示
{
"rules": {
".read": "auth != null",
".write": "auth != null",
"user-locations":{
"$uid": {
".indexOn": "timestamp"
}
}
}
}
最佳答案
您需要startAt()
和endAt()
:
var query = firebase.database()
.ref('user-locations/' + currentUID)
.orderByChild('timestamp')
.startAt(startTimestamp)
.endAt(endTimestamp)
.on("child_added", function(data) {
更新:在更新的代码中,您将时间戳记作为字符串传递。但是在数据库中,它们以数字形式存储,因此您还必须在查询中使用数字:
.startAt(1501061958000)
.endAt(1501062154000)