@ angular / fire: как получить результаты с помощью startAt () и endAt () - PullRequest
0 голосов
/ 08 февраля 2019

Я занимаюсь разработкой приложения виртуальной прокрутки для чата, созданного на основе angular и firebase.Сообщения разговора хранятся в базе данных реального времени firebase.enter image description here

(когда мы расширяем дочерний элемент, данные выглядят так)

enter image description here

Iсначала нужно загрузить последние 50 разговоров, а затем, когда пользователь прокручивает чат, мне нужно загрузить следующие 50 разговоров и так далее.

Я пытался использовать метод startAt(), endAt() для извлечения данных, но результаты не возвращались из базы данных.

1 Ответ

0 голосов
/ 08 февраля 2019

Вам необходимо использовать .limit (50) для первого запроса, а для последовательных запросов использовать .limit (50) и .startAfter ().Вам не нужно использовать endAt или endAfter.

Вам также необходимо упорядочить результат в соответствии с некоторым полем и использовать одно и то же поле для упорядочения для всех запросов.Итак, для первого запроса:

ref.where(...).orderBy(...).limit(50);

затем сохраните последнюю ссылку на документ в ответе.

Для всех последовательных запросов:

ref.where(...).orderBy(...).startAfter(lastDocumentRef).limit(50);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...