У меня есть следующая схема 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.