Прослушивание двух точных (но независимых) полей в конкретном документе Firestore с помощью Flutter

#firebase-realtime-database #flutter #google-cloud-firestore

#firebase-realtime-database #flutter #google-облако-firestore

Вопрос:

В моем приложении для чата, когда пользователь забанен, я хочу вышвырнуть его из чата. Более того, у меня есть закрепленное сообщение (которое не имеет ничего общего с запретом пользователей), которое отображается в режиме просмотра чата (через Stack). Теперь я хочу подключиться к Firestore к определенному документу группы и постоянно наблюдать, не забанен ли пользователь (стоит ли это большой пропускной способности. Кроме того, я хочу обновить сообщение о закрепленном статусе. Обе информации находятся в одном документе в полях (admin -> список всех запрещенных пользователей и pinnedMessage).

Обратите внимание, что я использую как Firestore, так и базу данных реального времени (база данных реального времени исключительно для сохранения сообщений чата и токенов для FCM), Firestore для всего остального (сведения о группе / пользователе и т.д.). Я также знаком с Streambuilder и Futurebuilder, Которые, я думаю, здесь не подходят?

Я также хочу сэкономить ресурсы…

Ответ №1:

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

Если это означает, что вы будете считывать слишком много данных для выполнения определенной задачи, рассмотрите возможность разделения документа на несколько документов, содержащих только данные, необходимые для этой задачи.

Комментарии:

1. Вы видите проблему в том, что на одном экране я использую базу данных реального времени для сообщений чата и имею второе «всегда прослушивающее» соединение с Firestore? Я не вижу другого шанса, как выгнать пользователя (который в данный момент находится в чате) из этого чата, если он будет забанен. Более того, есть идеи, как реализовать «прослушиватель единого документа» для Firestore во Flutter?

2. Это довольно расплывчатый вопрос. Делайте все, что вам нужно, чтобы ваши требования были выполнены. Если у вас другой вопрос о том, как использовать продукты Firebase, пожалуйста, задайте новый вопрос, чтобы объяснить, что вам неясно.

3. Чтобы решить мой вышеупомянутый вопрос и быть как можно более конкретным: как мне постоянно прослушивать один документ Firestore во Flutter?

4. Добавьте прослушиватель и никогда не удаляйте его.