Firestore whereEqualTo,orderBy和limit(1)不起作用

时间:2018-05-12 10:41:53

标签: java android firebase google-cloud-firestore

我想从常规查询我的锻炼集合中的最新锻炼。这意味着我用whereEqualTo我的routineKey查询,按开始时间顺序按降序排序,然后限制为1,然后取出锻炼的第一个键/ Id。

然而,这不起作用。 whereEqualToorderBy分开工作但未合并。我做错了什么?

fm.getColRefWorkout().whereEqualTo("routineKey", routineKey).orderBy("startTimeStamp", Query.Direction.DESCENDING).limit(1).get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() { 
                @Override
                public void onSuccess(QuerySnapshot documentSnapshots) {
                    workoutKey = documentSnapshots.getDocuments().get(0).getId();
                    //To stuff with this workoutKey
                }
            });

1 个答案:

答案 0 :(得分:5)

除非您为其创建index,否则此查询将无效。这可以通过在Firebase Console中手动创建,或者如果您使用的是Android Studio,则可以在logcat中找到一条听起来像这样的消息:

FAILED_PRECONDITION: The query requires an index. You can create it here: ...

您只需点击该链接或将网址复制并粘贴到网页浏览器中,您就会自动创建索引。