'Event Listener in Firestore doesn’t see field updates in documents inside collection. Android, Java
I have next firestore scheme: collection "users" - document user_id - collection "trips" - document trip_id - collection "requests" - document request_user_id with fields: and boolean field <is_accepted>
On one of my pages I want to listen to realtime updates of requests: if <is_accepted> changes from 0 to 1(it means user is accepted for a trip).
I have written EventListener to track it:
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}}
It works fine when to read data first time on the page but when I make updates in document like:
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);
Listener doesn’t see any changes. What can be wrong?
Solution 1:[1]
Your listener is only being added to documents where accepted is already set to 1. Remove .whereEqualTo("accepted", 1) when registering the listener, or change it to 0 to only listen to documents that have not been accepted yet.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
