Android firebase筛选器的未知异常
此代码:Android firebase筛选器的未知异常,android,firebase,google-cloud-firestore,Android,Firebase,Google Cloud Firestore,此代码: var query: Query = store.collection(COLLECTION_USERS) query = query.whereGreaterThanOrEqualTo("age", filter.startAge).whereLessThanOrEqualTo("age", filter.endAge) query = query.whereGreaterThanOrEqualTo("start_date", filter.start
var query: Query = store.collection(COLLECTION_USERS)
query = query.whereGreaterThanOrEqualTo("age", filter.startAge).whereLessThanOrEqualTo("age", filter.endAge)
query = query.whereGreaterThanOrEqualTo("start_date", filter.startDate).whereLessThanOrEqualTo("end_date", filter.endDate)
query = query.whereEqualTo("sex", filter.sex)
return query.get()
抛出异常:java.lang.IllegalArgumentException:除whereEqualTo()之外的所有where筛选器必须位于同一字段上。但是您在“年龄”和“开始日期”上有过滤器
如何修复?说不同字段上的范围过滤器是禁止的。因此Firestore允许链接多个where()
方法来创建更具体的查询,但只能在同一字段上
要实现所需的功能,需要查询数据库两次,每次查询一次,因为不能在同一查询中同时使用这两种方法
另一种方法是存储一个可能适合查询的特殊标志,尽管在现实世界的应用程序中,几乎不可能存储用户可能查询数据的每一种方式。我写的是相同的答案,它仅限于查询不同字段上的多个位置。