我每分钟都会存储用户的lat, lng, timestamp
我只想读取基于timestamp的部分数据。我试过下面的查询,没有用。还要检查我的示例数据库的附件。

javascript - Firebase请求的行范围-LMLPHP

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;
}


因此,我输入了startTimestampendTimestamp。我只需要timestampstartTimestamp之间的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)

09-17 02:13