Как заказать обратный просмотр таблицы данных в таблице? - PullRequest
0 голосов
/ 15 апреля 2019

Я извлекаю данные в свою базу данных и отображаю в таблице внутри таблицы. Я получаю данные по каждому. Я использую orderByChild('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 Ответ

1 голос
/ 15 апреля 2019

Для сортировки данных лучше полагаться на базу данных (бэкэнд), чем на внешний интерфейс (особенно если у вас большое количество записей).

Находясь в Firestore, вы можете сортировать в порядке возрастания или убывания (см. https://firebase.google.com/docs/firestore/query-data/order-limit-data), это невозможно в базе данных реального времени (orderByChild() сортирует только в порядке возрастания).

Поскольку 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);
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...