Прослушиватель событий в 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 была разработана компанией Sun Microsystems в 1991 году и первоначально называлась Oak.


17
1

Ответ:

Решено

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