如果 Firestore 中没有逻辑 OR 运算符,则必须在本地合并两个单独的查询才能检索所需的结果。为了保持正确的顺序,请考虑使用 Tasks.whenAllSuccess() 方法,而不是将第二个查询嵌套在第一个查询的成功侦听器中。
以下代码片段演示了推荐的方法:
FirebaseFirestore rootRef = FirebaseFirestore.getInstance(); Query firstQuery = rootRef...; Query secondQuery = rootRef...; Task firstTask = firstQuery.get(); Task secondTask = secondQuery.get(); Task combinedTask = Tasks.whenAllSuccess(firstTask, secondTask).addOnSuccessListener(new OnSuccessListener<List<Object>>() { @Override public void onSuccess(List<Object> list) { // The results are ordered according to the order of the queries // ... } });
whenAllSuccess() 方法返回一个任务,当所有提供的任务都成功完成时,该任务将完成。任务的结果是一个对象列表,其中每个对象代表相应任务的结果。在这种情况下,列表将包含两个元素,每个元素分别代表firstTask和secondTask的结果。列表中元素的顺序将与在whenAllSuccess() 中指定任务的顺序相匹配。
此方法可确保结果根据任务的顺序进行排序,从而允许您合并来自多个查询的结果,同时保留其正确的顺序。
以上是如何在保留订单的同时在本地合并 Firestore 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!