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

Java Firestore whereEqualTo、orderBy和limit(1)不起作用,java,android,firebase,google-cloud-firestore,Java,Android,Firebase,Google Cloud Firestore,我想查询我的训练集合,以获取例行训练中的最新训练。也就是说,我用whereEqualTomy routineKey进行查询,按开始的时间戳按降序排序,然后限制为1,然后使用训练的第一个键/Id 然而,这不起作用其中equalto和orderBy分别工作,但不合并。我做错了什么 fm.getColRefWorkout().whereEqualTo("routineKey", routineKey).orderBy("startTimeStamp", Query.Direction.DESCENDI

我想查询我的训练集合,以获取例行训练中的最新训练。也就是说,我用
whereEqualTo
my routineKey进行查询,按开始的时间戳按降序排序,然后限制为1,然后使用训练的第一个键/Id

然而,这不起作用<代码>其中equalto和
orderBy
分别工作,但不合并。我做错了什么

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
                }
            });
fm.getColRefWorkout().whereEqualTo(“routineKey”,routineKey).orderBy(“startTimeStamp”,Query.Direction.DESCENDING”).limit(1.get().addOnSuccessListener(新建OnSuccessListener(){
@凌驾
成功时公共无效(QuerySnapshot文档快照){
workoutKey=documentSnapshots.getDocuments().get(0.getId();
//用这把钥匙塞满东西
}
});

除非您为该查询创建一个。这可以通过在您的系统中手动创建来实现,或者如果您使用的是Android Studio,您将在您的logcat中找到如下消息:

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

您只需单击该链接或将URL复制粘贴到web浏览器中,即可自动创建索引。

谢谢您的回答!没有LogCat消息,但我手动创建了一个索引。FirebaseFirestore.instance.collection('messages')。其中('encSenderUId',isEqualTo:_loggedInUserId.).orderBy('sentOn',descending:false)。snapshots(),我想按
sentOn
字段执行orderBy操作,不是通过encSenderUId,那么为什么firebase控制台通过提供链接向encSenderUId发送索引。很奇怪。请建议。谢谢。@Kamlesh没有看到全部代码,我帮不了什么忙。所以,请使用自己的问题发布一个新的问题,这样我和其他Firebase开发人员可以帮助您。我已经为相同的问题创建了索引,并且它起到了作用。这很奇怪,但我确实解决了这个问题。谢谢