Я пытаюсь добавить некоторые функции разбиения на страницы в мой Express + Firebase Realtime Database SDK, но я не уверен, как этого добиться, и документация мне не помогает. Кроме того, все примеры, которые я нашел, касаются Firestore.
Так же, как пример, у меня есть эта модель Пользователь , к которой обращается database.ref('users')
. Представьте, что у меня есть 10 пользователей, чьи идентификаторы go от 1 до 10 соответственно, и я хочу разбить на страницы 5 на страницу.
Что я ожидаю, так это получить пользователей, чьи ключи go от 1 до 5, а затем, когда кто-то кликнув на странице 2, он получит пользователей, чьи ключи go от 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.