如何在表中对数据表进行反向排序?

时间:2019-04-15 14:23:35

标签: jquery firebase firebase-realtime-database

我正在将数据提取到我的Firebase并显示到表中的表。我得到每个人的数据。我使用orderByChild('id'),但它首先显示较小的ID。我需要从大到小排序。

我为每个数据创建不同的表。

var database = firebase.database();
database.ref("players").orderByChild('id').once('value', function(snapshot) {
      if (snapshot.exists()) {
        var content = '';
        snapshot.forEach(function(data) {
          var val = data.val();
          var pet = val.NewZaman.substring(12, 19);
          var pet2 = val.NewZaman.substring(0, 11);
          content += '<table class="filmlermob-table">';
          content += '<tr>';
          content += '<th colspan="3">' + val.Oynayanlar + '</th>';
          content += '</tr>';
          content += '<tr>';
          content += '<td data-th="filmtarih">' + pet2 + pet + '</td>';
          content += '<td data-th="filba" style="background: #f7f7f7;"><p class="nams">' + val.filba+ '</td>';
          content += '<td data-th="filmkanal">' + val.filmkanal+ '</td>';
          content += '</tr>';
          content += '</table>';
        });

        $('#filmler-table').append(content);

      }

HTML

<table id="filmler-table" class="table">

</table>

修改

我用

 function kontole() {





    var db = firebase.database();
  var updates = {};

  db.ref().child('players').once('value', function(snapshot) {
    snapshot.forEach(function(childSnapshot) {
      var childKey = childSnapshot.key;
      var childData = childSnapshot.val();
      console.log(childData);
      updates[childKey + '/sortingId'] =
        parseInt(childSnapshot.val().id, 10) * -1;
    });
    db.ref().update(updates);

});
}

1 个答案:

答案 0 :(得分:1)

最好依靠数据库(后端)对数据进行排序,而不要依靠前端(特别是如果您有大量记录)。

在Firestore中,您可以按升序或降序排序(请参阅https://firebase.google.com/docs/firestore/query-data/order-limit-data),这在实时数据库中是不可能的(orderByChild()仅按升序排序)。

由于id是一个数字值,因此实时数据库的一种可能方法是复制您的数据,并将id值(即id乘以-1)的加和逆存储在额外的字段,例如sortingId

然后您的查询将如下所示:

database.ref("players").orderByChild('sortingId').once('value', function(snapshot) {...}))

要更新所有现有数据,请使用以下JavaScript代码:

  var db = firebase.database();
  var updates = {};

  db.ref('players').once('value', function(snapshot) {
    snapshot.forEach(function(childSnapshot) {
      var childKey = childSnapshot.key;
      var childData = childSnapshot.val();
      console.log(childData);
      updates['/players/' + childKey + '/sortingId'] =
        parseInt(childSnapshot.val().id, 10) * -1;
    });
    db.ref().update(updates);
  });