Как заказать обратный переход к таблице данных в таблице?

#jquery #firebase #firebase-realtime-database

# #jquery #firebase #firebase-realtime-база данных

Вопрос:

Я извлекаю данные в свою firebase и отображаю в таблице внутри таблицы. Я получаю данные по каждому. Я использую 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. Можете ли вы показать свою модель данных? Какие значения вы храните в id? Число? Автоматически генерируемые уникальные идентификаторы Firebase? Буквенно-цифровая строка?

2. Обновлено первое сообщение.

Ответ №1:

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

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

Комментарии:

1. Как добавить ‘sortingId’ всех дочерних элементов за один раз и как я включаю.

2. @Dorbagna можете ли вы добавить к своему вопросу код, который вы используете для создания элемента?

3. Я думаю, что нашел способ. Я использую «orderByChild(‘id’).limitToFirst(1).» когда я получаю данные. Поэтому я просто вызываю дочерний элемент с наименьшим числом. Затем я использую «myref.child(«id»).set(biggestnumber);» и «biggestnumber = parseInt(biggestnumber ) -1; Затем нажимаю кнопку и вызываю second. Есть ли какой-либо другой простой способ?

4. @Dorbagna Извините, что не на 100% понятно, что вы имеете в виду. Вы хотите знать, как обновить существующие данные или как записать два значения для новых данных?

5. Я могу использовать оба. Но я думаю, что сначала обновлю существующие данные. Затем мне нужно будет записать новые данные.