Firebase orderByChild无法按预期工作

时间:2018-03-30 21:04:58

标签: javascript firebase firebase-realtime-database

我在firebase中有一个带有这种结构的数据库(让我们假设firebase中的顺序在这里是相同的):

"002f6b4a378caed3be3bd00346e3d380": {
  "id": "002f6b4a378caed3be3bd00346e3d380",
  "name": "Thayne",
  "date": 1516242371000,
  "totalDuration": 297
},
"8181554c6d4da1b7bfbb74aafe683b5d": {
  "id": "8181554c6d4da1b7bfbb74aafe683b5d",
  "name": "Marna",
  "date": 1517840087000,
  "totalDuration": 283
},
"d5d17675cae2b480020e0d43b9074658": {
  "id": "d5d17675cae2b480020e0d43b9074658",
  "name": "Clint",
  "date": 1515673469000,
  "totalDuration": 184
},
"9f2cdf88d59dd778d9aaa5745d10d1e2": {
  "id": "9f2cdf88d59dd778d9aaa5745d10d1e2",
  "name": "Nadia",
  "date": 1521918148000,
  "totalDuration": 234
},
"afc21c30da7b4ef3e88234cd7988f6a7": {
  "id": "afc21c30da7b4ef3e88234cd7988f6a7",
  "name": "Alexi",
  "date": 1519041073000,
  "totalDuration": 110
}

我在每条记录上都有两个int,datetotalDuration,时间是一个UNIX时间戳,持续时间只是30到350之间的数字。

我想检索由这些数字中的任何一个排序的所有元素的列表。通过API和我试过的文档:

var orderRef = firebase.database().ref("elements/");

orderRef.orderByChild('totalDuration').on("value", function(data){
  var result = data.val();
  for ( id in result ) {
    console.log( result[id].totalDuration );
  }
});

我期待着这个:

110
184
234
283
297

相反,我得到了数据库中已经存在的相同顺序:

297
283
234
110
184

日期相同,它以与数据库中存在的顺序相同的顺序返回数据。

我想知道是否存在以下问题:a)我的代码,或b)我对orderByChild实际如何运作的概念。

0 个答案:

没有答案