我正在尝试为我的Express + Firebase实时数据库SDK添加一些分页功能,但我不确定如何实现,而且文档没有帮助我。此外,我找到的所有示例都涉及Firestore。
以一个模型User为例,可以通过
我期望的是获取键从1到5的用户,然后当有人点击第二页时,它将获取键从6到10的用户。
根据文档,我理解应该添加类似以下内容的代码:
到目前为止我了解到
以一个模型User为例,可以通过
database.ref('users')
访问。假设我有10个用户,他们的ID分别从1到10,并且我想每页显示5个用户。我期望的是获取键从1到5的用户,然后当有人点击第二页时,它将获取键从6到10的用户。
根据文档,我理解应该添加类似以下内容的代码:
(req, res) => {
const { key } = req.query;
let ref = database.ref('users')
.orderByChild('createdAt')
.limitToLast(5);
if (key) {
ref = ref.startAt(key);
}
ref.once('value')
.then(snapshot => ...);
}
到目前为止我了解到
limitToLast()
和limitToFirst()
的区别在于排序方式。类似于分别使用ORDER BY createdAt DESC
和ORDER BY createdAt ASC
。
如果我设置了ref.startAt(5)
,之前的代码将不再起作用,因为我会得到前五个用户(1到5)。
我应该采取什么方法呢?提前感谢您的回答。
编辑:
我现在知道如果我执行database.ref('users').orderByChild('createdAt').limitToLast(5).startAt(5)
,我将获得createdAt
大于5的文档,这是错误的。我应该在获取那些键接近5的文档后按日期排序。