首页 > 解决方案 > Android Firestore 查询集合组被跳过

问题描述

我正在尝试使用 Firestore 的.collectionGroup功能获取子集合,但它似乎根本没有触发。它应该返回至少一个找到的文档,因为它的状态是“已接受”但是当我运行调试时,它似乎跳过了该函数并且不返回任何类型的错误或我的任何日志。

当我正常运行它时,而不是在调试模式下,它会返回"onComplete: found no book reservations for this book"

当首次执行新的集合组查询时,最初也没有提示我创建复合索引,这通常是使用单个索引字段完成的,因此我尝试创建自己的索引,尽管我很确定它不能正常工作。

任何有关如何解决此问题的帮助或指导表示赞赏。

我的 firebase 数据库设置是: Collection:"Books" --> subcollection:"bookPendingRequests"

在此处输入图像描述 在此处输入图像描述

在此处输入图像描述

这是一个调试屏幕显示它正在读取正确的 bookFirebaseId 在此处输入图像描述

这是设置的 firebase 标记,以说明它应该阅读的内容。 在此处输入图像描述

这是我的 collectionGroup 索引: 在此处输入图像描述

这是我的代码,它设置为从 onCreate() 开始

private void loadBookReservationDates() {

        getIncomingIntent();

        bookPendingRequests = firestoreDB.collectionGroup("bookPendingRequests")
                .whereEqualTo("bookRequestParentId", bookFirebaseIdString)
                .whereEqualTo("bookReservationStatus", "Accepted");


        bookPendingRequests.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if (task.getResult().size() < 0) {

                    for (int i = 0; i < task.getResult().size(); i++) {
                        String dates = task.getResult().getDocuments().get(i).get("bookReservationDates").toString();
                        Log.d(TAG, "onComplete: dates: " + dates);
                    }
                } else {
                    Log.d(TAG, "onComplete: found no book reservations for this book");
                }
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.d(TAG, "onFailure() returned: " + e);
            }
        });

    }

标签: androidfirebasegoogle-cloud-firestore

解决方案


推荐阅读