使用文档ID从Firestore获取数据

时间:2020-05-29 19:11:55

标签: java android firebase google-cloud-firestore

我的firestore数据库中有两个集合,第一个是所有文档的列表(BlockList),第二个是用户的。当用户在应用程序上为帖子添加书签时,仅将此帖子的ID发送到子收藏夹(收藏夹)。

所以我如何根据第一个集合的ID显示该子集合的文档。

image 1

image 2

firebaseFirestore.collection("Users")
                .document(userId).collection("Favorites").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if (task.isSuccessful()) {
                    List<String> list = new ArrayList<>();
                    for (QueryDocumentSnapshot document : task.getResult()) {
                        list.add(document.getId());
                    }
                    Log.d(TAG, list.toString());
                } else {
                    Log.d(TAG, "Error getting documents: ", task.getException());
                }
            }
        });

我使用此代码访问子集合ID的列表,但是我想知道如何使用它从主集合(BlockList)中获取适合此ID的文档。

2 个答案:

答案 0 :(得分:1)

循环后,您已经有了ID的列表,只需循环遍历它们,然后在blockedList中找到它们即可:

BeginPaint

答案 1 :(得分:0)

    userRef.document(reference)
                    .collection(favCollect)
                    .get()
                    .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                        @Override
                        public void onComplete(@NonNull Task<QuerySnapshot> task) {
                            if (task.isSuccessful()) {
                                task.getResult()
                                        .getQuery()
                                        .addSnapshotListener((queryDocumentSnapshots, e) -> {
List<DocumentChange> documentChanges = queryDocumentSnapshots.getDocumentChanges();
                                    for (int i = 0; i < documentChanges.size(); i++) {

}

}

通过这种方式,您可以找到所需的ID