Firebase Orderby неправильно отформатирован - PullRequest
2 голосов
/ 07 июля 2019

Использование Firebase в качестве базы данных и выборка значений на основе идентификаторов. Создано поле order, меньшее число оно будет отображать значение в первую очередь. Есть около 16 предметов. Все работает нормально, но проблема в том, что порядок не работает должным образом, данные отображаются, как показано в примере ниже.

Пример

1,11,12,13,14,15,16,2,3,4,5,6,7,8,9,10

Результат должен быть

1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16

Функция

function fetchSlides() {
  var docRef = db.collection("Slides");
  docRef
    .orderBy("order")
    .get()
    .then(querySnapshot => {
      var totalRecords = querySnapshot.size; // Total amount of received records
      pg.tslide = totalRecords + 1; // Account for slide-1

      // Adjust zIndex of slide-1
      $("#slide-1").css("z-index", totalRecords + 1);

      // Parse and append received slides
      var count = 0;
      querySnapshot.forEach(doc => {
        var slide = getSlide(doc.data(), count, totalRecords);
        $(".slideshow").append(slide);
        ++count;
      });

      // Re-adjust page size
      pg.onResize();
      // Update scroll position
      pg.onScroll();
    });
}

Вышеуказанная функция извлекает и отображает данные. мне нужно изменить в .orderBy("order")?

1 Ответ

3 голосов
/ 07 июля 2019

Похоже, что ваше поле "заказ" является строковым типом, а не числом.То, что вы показываете, это (лексикографический) порядок сортировки строк.Вы не можете изменить это поведение, поскольку таким способом строки сортируются естественным образом, и вы не можете заставить Firestore думать, что тип является чем-то отличным от того, что он есть в базе данных.

Если эти значения должныбудьте числами, вам придется обновить все документы, чтобы использовать фактические типы чисел вместо строк.Консоль Firestore сообщит вам фактический тип данных поля, если навести на него указатель мыши.Строки будут отображаться в кавычках, а цифры - нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...