Firestore Real Time Добавить с лимитом - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть приложение чата в реальном времени Firestore, и я хочу ограничить его только 10 сообщениями.

this.afs
      .collection<any>('chats')
      .doc(chatId)
      .collection<any>('messages', ref =>
        ref.orderBy('created_date', 'asc').limit(10)
      )
      .snapshotChanges()
      .pipe(
        map(actions =>
          actions.map(a => {
            console.log(a);
            const data = a.payload.doc.data();
            const id = a.payload.doc.id;
            return { id, ...data };
          })
        )
      );

Проблема в том, что я прекращаю получать свои новые сообщения, когда достигаю предела.Можно ли ограничить количество сообщений и получать обновления в режиме реального времени для любых предстоящих сообщений?

1 Ответ

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

A snapshotChanges() обратный вызов срабатывает каждый раз, когда результаты в запрошенном изменении запроса.

Поскольку вы заказываете по возрастанию , это означает, что если сообщение добавляется с created_date within диапазоном первых 10 элементов, ваш snapshotChanges() должен бытьснова звонят.В большинстве приложений чата вам нужно сортировать по убыванию и получать последние 10 сообщений.В этом случае добавление сообщения с более новой созданной датой вызовет повторный запуск snapshotChanges.

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