[英]Firestore Pagination: how to define 'startAt'-cursor for REST?
[英]Firestore - Get pagination cursor from denormalized data
我有一个分页的帖子列表,每次获取时都会重新计算我的 cursor,并将最后一个 QuerySnapshot 文档分配给它:
// Calculate the new startAfter
if (querySnapshot.size) {
startAfter = querySnapshot.docs[querySnapshot.docs.length - 1];
}
不知何故,使用文档快照作为游标是避免破坏分页的最“安全”方法之一。
我正在考虑使用非规范化优化我的应用程序的某些部分。 例如,由于我的应用程序的每个用户都可以上传无限的帖子,这些帖子在他们的个人资料中以 10 x 10 的比例显示,因此将最后 10 个用户帖子(非规范化)添加到用户的文档(数组字段)可能是个好主意。
有了这个,我避免了对每个访问过的配置文件进行前 10 次提取。 但是...如何分配第一个 startAfter cursor? 我的意思是,是否可以在文档或类似的东西中编写文档快照以获得相同的行为?
如果您查看startAfter
的文档,您会看到有两个重载:
startAfter ( snapshot: DocumentSnapshot < any > ): Query < T >
创建并返回一个在提供的文档(不包括)之后开始的新
Query
。 起始position是相对于查询顺序的。 该文档必须包含此查询的orderBy
中提供的所有字段。参数
snapshot
:DocumentSnapshot<any>
之后要启动的文档的快照。
和
startAfter (... fieldValues: any [] ): Query < T >
创建并返回一个新的
Query
,该查询在提供的字段之后相对于查询的顺序开始。 字段值的顺序必须与查询的 order by 子句的顺序相匹配。参数
Rest...fieldValues: any[]
在查询的排序依据之后开始此查询的字段值。
由于您没有DocumentSnapshot
,您可以使用第二个重载并传递相关字段值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.