Firebase Orderby的格式不正确

时间:2019-07-07 08:58:38

标签: javascript firebase google-cloud-firestore

将Firebase用作db并根据id获取值。创建了一个字段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 个答案:

答案 0 :(得分:3)

看起来您的“订单”字段是字符串类型而不是数字。您正在显示的是字符串的(字典编排)排序顺序。您不能更改此行为,因为这是字符串自然排序的方式,并且您不能使Firestore认为该类型不是数据库中实际存在的类型。

如果这些值应该是数字,则必须更新所有文档以使用实际的数字类型而不是字符串。如果将鼠标悬停在Firestore控制台上,它将告诉您字段的实际数据类型。字符串将用引号引起来,而数字则不会。