簡體   English   中英

在firebase實時數據庫中按時間戳對數據進行排序

[英]Sort data by timestamp in firebase realtime database

我已將數據存儲在 firebase 實時數據庫中,如下所示:

{
  "orders" : [ null, {
    "res_name" : "order test",
    "res_phone" : "1234567890",
    "timestamp" : 1585123988381
  }, {
    "res_name" : "tesst restaurant",
    "res_phone" : "987654321",
    "timestamp" : 1585124001850
  }, {
    "res_name" : "ppp",
    "res_phone" : "9856847758",
    "timestamp" : 1585124624718
  } ]
}

現在我想按時間戳值降序對數據進行排序。 怎么做到呢?

我正在下面對數據進行排序,但它不起作用。

firebase.database().ref('orders').orderByChild('timestamp').on('value', function(snapshot) {
    var value = snapshot.val();
    var htmls = [];
    $.each(value, function(index, value){

      if(value){

         htmls.push('<tr><td>'+ value.res_name +'</td><td>'+ value.res_phone +'</td><td>'+ value.timestamp +'</td></tr>')
      lastIndex = index;
    });
    $('#tblId').html(htmls);

當您對查詢使用orderByChild('timestamp')時,Firebase 會按照您請求的順序返回您請求的子節點。 對於每個子節點,它具有三條信息:

  • 它的關鍵。
  • 它的價值。
  • 它相對於其他子節點的順序。

但是,當您隨后調用snapshot.val()它必須將該信息轉換為 JSON,其中只有鍵和值的位置。 因此,此時有關訂單的信息將被刪除。

要按照您要求的順序處理孩子,請使用snapshot.forEach()

firebase.database().ref('orders').orderByChild('timestamp').on('value', function(snapshot) {
    var value = snapshot.val();
    var htmls = [];
    snapshot.forEach(function(child) {
        let value = child.val();
        htmls.push('<tr><td>'+ value.res_name +'</td><td>'+ value.res_phone +'</td><td>'+ value.timestamp +'</td></tr>')
    });
    $('#tblId').html(htmls);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM