Pas*_*cal 7 javascript firebase google-cloud-firestore
我想按 20 个项目的页面对存储在 Firebase 中的论坛帖子进行分页,如下所示:
等等。
现在我知道我可以使用查询游标(如此处所述),这对于无限滚动来说效果非常好,因为我从页面 1->2->3 等开始,每次我都有最后一个可见的我的方法中可供参考的文档.startAfter(lastVisible)。
但是,如果我希望用户能够访问第 13 页直接查看帖子 241-260,该怎么办?有没有办法从页面文档 241 开始,而不需要先进行(多个)查询来获取 lastVisible 文档?
添加:
这可能非常糟糕,因此在执行以下操作时要小心。我找到了以下方法来“解决”这个问题:
const pageNo = 1 /* variable */
const postsPerPage = 20
const baseRef = fireDb.collection("posts")
let currentPageRef
if (pageNo === 1) {
currentPageRef = baseRef.limit(postsPerPage)
} else {
let lastVisibleRef = baseRef.limit((pageNo-1) * postsPerPage)
const lastVisibleQuerySnapshot = await lastVisibleRef.get()
const lastVisiblePost = lastVisibleQuerySnapshot.docs[lastVisibleQuerySnapshot.docs.length-1]
currentPageRef = baseRef.startAfter(lastVisiblePost).limit(postsPerPage)
}
const currentPageQuerySnapshot = await currentPageRef.get()
Run Code Online (Sandbox Code Playgroud)
这需要两个查询。但它实现了我想要实现的目标。谁能判断该解决方案的效率/计费有多糟糕?例如,如果有人访问第 999 页,我担心成本会很高?
使用 Firestore 客户端 SDK,无法指定查询结果的偏移量。您可以在 GitHub 上阅读有关此问题的讨论。
然而,服务器 SDK 确实有offset。
| 归档时间: |
|
| 查看次数: |
2101 次 |
| 最近记录: |