gpt4 book ai didi

android - Firestore "Invalid query"- 我使用索引错误吗?

转载 作者:行者123 更新时间:2023-12-01 13:16:38 24 4
gpt4 key购买 nike

我正在使用具有以下结构的 firebase cloud firestore datadabse 构建应用程序:enter image description here

我正在查询字段“StartDate”大于0且“EndDate”等于0的用户书籍,然后该查询应按标题排序。

CollectionReference booksCollection = mFirebaseDatabase.collection("users").document(user.getUid()).collection("books");

Query databaseQuery = booksCollection.whereGreaterThan("StartDate", 0).whereEqualTo("EndDate", 0).orderBy("Title");

databaseQuery.get()

为此,我读到您需要使用索引(尽管我没有得到错误消息中的索引链接,因为它表明我应该这样做)。我的索引如下所示:

enter image description here

但我收到错误消息:

java.lang.IllegalArgumentException: Invalid query. You have an inequality where filter (whereLessThan(), whereGreaterThan(), etc.) on field 'StartDate' and so you must also have 'StartDate' as your first orderBy() field, but your first orderBy() is currently on field 'Title' instead.

最佳答案

Firestore 查询只能对单个字段的范围进行排序或过滤。您正在尝试过滤 StartDate然后在 Title 上订购,这是不可能的。
Firestore documentation on queries包含不允许的查询的类似示例:

Invalid: Range filter and first orderBy on different fields

citiesRef.whereGreaterThan("population", 100000).orderBy("country");

Firestore 仅允许查询可以满足其性能保证,并允许对(当前)不可能的多个字段进行排序/范围过滤。见托德的 video on Firestore queries了解更多关于它是如何工作的。
典型的解决方法是让 Firestore 处理过滤器(在您的情况下为 StartDate,然后在 Android 应用程序中重新排序结果。

关于android - Firestore "Invalid query"- 我使用索引错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54244722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com