java–Cloud Firestore– 从多个位置获取文档

java–Cloud Firestore– 从多个位置获取文档,第1张

概述当用户在我的应用程序中检查他的朋友列表时,我希望该应用程序遍历列表中的每个用户并从CloudFirestore检索他的最新信息.这是我目前的代码:finalCollectionReferenceusersRef=FirebaseFirestore.getInstance().collection("users");usersRef.document(loggedE

当用户在我的应用程序中检查他的朋友列表时,我希望该应用程序遍历列表中的每个用户并从Cloud Firestore检索他的最新信息.

这是我目前的代码:

 final CollectionReference usersRef= FirebaseFirestore.getInstance().collection("users");            usersRef.document(loggedEmail).collection("frIEnds_List").get().addOnSuccessListener(new OnSuccessListener<querySnapshot>() {                @OverrIDe                public voID onSuccess(querySnapshot documentSnapshots) {                    if (!documentSnapshots.isEmpty()){                        for (documentSnapshot frIEnddocument: documentSnapshots) {                            usersRef.document(frIEnddocument.getString("email")).get().addOnSuccessListener                                    (new OnSuccessListener<documentSnapshot>() {                                @OverrIDe                                public voID onSuccess(documentSnapshot documentSnapshot) {                                    User frIEnd=documentSnapshot.toObject(User.class);                                frIEndsList_UserList.add(frIEnd);                                }                            });                        }                        ///...                    }                    else                        noFrIEndsFound();                }

这是我想要的过程的一个例子:

正如您所看到的,我可以通过这种方式获取每个用户的信息,但是我找不到一种方法来监听此过程,并在我获得有关用户列表中所有朋友的信息时继续 *** 作.

这是我能够立刻获得所有朋友信息的方式吗?

解决方法:

Firestore不直接支持您要求的连接.

您可以使用querySnapshot中的getDocumentChanges构建一个链式侦听器,以跟踪您应该收听哪些朋友.

想象一下,如果你保留了这样的朋友监听器注册地图

Map<String, ListenerRegistration> frIEndListeners = new HashMap<>();

然后你可以注册这样的东西:

usersRef.document(loggedEmail).collection("frIEnds_List")    .addSnapshotListener(new EventListener<querySnapshot>() {      @OverrIDe      public voID onEvent(querySnapshot snapshot, FirebaseFirestoreException error) {        for (documentChange change : snapshot.getdocumentChanges()) {          documentSnapshot frIEnd = change.getdocument();          String frIEndID = frIEnd.getID();          ListenerRegistration registration;          switch (change.getType()) {            case ADDED:            case MODIFIED:              if (!frIEndListeners.containsKey(frIEndID)) {                registration = usersRef.document(frIEndID).addSnapshotListener(null);                frIEndListeners.put(frIEndID, registration);              }              break;            case REMOVED:              registration = frIEndListeners.get(frIEndID);              if (registration != null) {                registration.remove();                frIEndListeners.remove(frIEndID);              }              break;          }        }      }    });

但请注意,这可能实际上并不是一个好主意.您可能最好将足够的信息下载到frIEnds_List文档中,一旦您真正深入了解该朋友的详细信息,您只需要加载实际的朋友用户文档.

总结

以上是内存溢出为你收集整理的java – Cloud Firestore – 从多个位置获取文档全部内容,希望文章能够帮你解决java – Cloud Firestore – 从多个位置获取文档所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1118468.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存