要求
问题
Firestore查询具有startAt()
和endAt()
方法,这些方法适用于OrderBy
字段的值。我希望在索引上有所作为。
interface Product{
price:number;
}
假设有20个产品有100个产品,10个产品有30个产品。 可以获取第一次加载
query
.orderBy(price,desc)
.limitTo(20)
现在最后一件商品的价格是20美元。要加载下20个结果
query
.orderBy(price,desc)
.startAt(20$)
.limitTo(20)
它将返回相同的结果。
答案 0 :(得分:1)
您应该“使用文档快照来定义查询光标”,如以下文档中所述:https://firebase.google.com/docs/firestore/query-data/query-cursors#use_a_document_snapshot_to_define_the_query_cursor
因此你会这样做:
var first = db.collection("....").orderBy("price", "desc").limit(20);
return first.get().then(function (documentSnapshots) {
// Get the last visible document
var lastVisible = documentSnapshots.docs[documentSnapshots.docs.length-1];
console.log("last", lastVisible);
// Construct a new query starting at this document,
// Get the next 20 cities.
var next = db.collection("....")
.orderBy("price", "desc")
.startAfter(lastVisible)
.limit(20);
});