Firestore 中的事件侦听器看不到集合中文档中的字段更新。 Android、Java

Event Listener in Firestore doesn’t see field updates in documents inside collection. Android, Java

我有下一个 firestore 方案: 集合“用户”-文档user_id-集合“旅行”-文档trip_id-集合“请求”-文档请求_user_id,字段:和布尔字段

在我的一个页面上,我想收听请求的实时更新:如果 从 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);

听众没有看到任何变化。 有什么问题吗?

您的侦听器仅添加到 accepted 已设置为 1 的文档。注册侦听器时删除 .whereEqualTo("accepted", 1),或将其更改为 0 以仅侦听尚未设置的文档已接受。