繁体   English   中英

Firestore - 从非规范化数据中获取分页 cursor

[英]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中提供的所有字段。

参数

snapshotDocumentSnapshot<any>

之后要启动的文档的快照。

startAfter (... fieldValues: any [] ): Query < T >

创建并返回一个新的Query ,该查询在提供的字段之后相对于查询的顺序开始。 字段值的顺序必须与查询的 order by 子句的顺序相匹配。

参数

Rest...fieldValues: any[]

在查询的排序依据之后开始此查询的字段值。

由于您没有DocumentSnapshot ,您可以使用第二个重载并传递相关字段值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM