将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")
吗?
答案 0 :(得分:3)
看起来您的“订单”字段是字符串类型而不是数字。您正在显示的是字符串的(字典编排)排序顺序。您不能更改此行为,因为这是字符串自然排序的方式,并且您不能使Firestore认为该类型不是数据库中实际存在的类型。
如果这些值应该是数字,则必须更新所有文档以使用实际的数字类型而不是字符串。如果将鼠标悬停在Firestore控制台上,它将告诉您字段的实际数据类型。字符串将用引号引起来,而数字则不会。