Прослушиватель событий в Firestore не видит обновлений полей в документах внутри коллекции. Андроид, Ява

У меня есть следующая схема firestore: коллекция «пользователи» — документ user_id — коллекция «поездки» — документ trip_id — коллекция «запросы» — документ request_user_id с полями: и логическим полем <is_accepted>

На одной из своих страниц я хочу слушать обновления запросов в реальном времени: если <is_accepted> меняется с 0 на 1 (это означает, что пользователь принят в поездку).

Я написал EventListener для отслеживания:

FirebaseFirestore firebaseFirestore = FirebaseFirestore.getInstance();
            firebaseFirestore
                    .collection("users")
                    .document(user_id)
                    .collection("trip")
                    .document(trip_id)
                    .collection("requests")
                    .whereEqualTo("accepted", 1)
                    .orderBy("timestamp", Query.Direction.DESCENDING)
                    .addSnapshotListener(new EventListener<QuerySnapshot>() {
                        @Override
                        public void onEvent(@Nullable QuerySnapshot value, @Nullable FirebaseFirestoreException error) {
                            Log.d("Hello", "Triggered");
                            if (error == null) {
                                if (value != null) {///  some actions}}

Он отлично работает при первом чтении данных на странице, но когда я делаю обновления в документе, например:

HashMap<String, Object> hashMap = new HashMap<String, Object>();
                hashMap.put("timestamp", Timestamp.now());
                hashMap.put("accepted", 1);

                firebaseFirestore
                        .collection("users")
                        .document(user_id)
                        .collection("trips")
                        .document(trip_id)
                        .collection("requests")
                        .document(joined_user_id)
                        .update(hashMap);

Слушатель не видит никаких изменений. Что может быть не так?

Основы программирования на Java
Основы программирования на Java
Java - это высокоуровневый объектно-ориентированный язык программирования, основанный на классах.
Концепции JavaScript, которые вы должны знать как JS программист!
Концепции JavaScript, которые вы должны знать как JS программист!
JavaScript (Js) - это язык программирования, объединяющий HTML и CSS с одной из основных технологий Всемирной паутины. Более 97% веб-сайтов используют...
0
0
17
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш слушатель добавляется только к документам, где accepted уже установлен на 1. Удалите .whereEqualTo("accepted", 1) при регистрации слушателя или измените его на 0, чтобы слушать только те документы, которые еще не были приняты.

Прошу прощения, ошибка только в тексте, сейчас исправлю

user499353 17.05.2022 16:23

в коде все было написано правильно, проблема осталась та же

user499353 17.05.2022 16:24

Я обновил свой ответ. Ваш слушатель добавляется только к документам, которые уже приняты.

Dan Harms 17.05.2022 16:26

Другие вопросы по теме