Firebase Пагинация базы данных в реальном времени - PullRequest
1 голос
/ 26 марта 2020

Я пытаюсь добавить некоторые функции разбиения на страницы в мой 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...