Android Firestore查询集合组被跳过

时间:2019-11-23 19:10:52

标签: android firebase google-cloud-firestore

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

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

最初也没有提示我创建复合索引,通常在第一次执行新的集合组查询时通常使用单数索引字段来完成,因此尽管很确定它无法正常工作,但我还是尝试创建自己的复合索引正确。

感谢您提供有关如何解决此问题的帮助或指导。

我的Firebase数据库设置为: 收藏:“书籍” ->子集合:“ bookPendingRequests”

enter image description here enter image description here

enter image description here

这是一个调试屏幕,显示它正在读取正确的bookFirebaseId enter image description here

这是firebase设置的标记,以说明应读取的内容。 enter image description here

这是我的collectionGroup索引: enter image description here

这是我的代码,设置为从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);
            }
        });

    }

0 个答案:

没有答案