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 以仅侦听尚未设置的文档已接受。
我有下一个 firestore 方案:
集合“用户”-文档user_id-集合“旅行”-文档trip_id-集合“请求”-文档请求_user_id,字段:和布尔字段
在我的一个页面上,我想收听请求的实时更新:如果
我写了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 以仅侦听尚未设置的文档已接受。