【发布时间】:2019-04-29 15:37:06
【问题描述】:
我的 Firestore 数据库中有一组这样的任务:
"tasks": {
v8NC4GovVOPe21fhwtp0 : {
id: "v8NC4GovVOPe21fhwtp0"
status: 0
dateFrom: 30 april 2019 at 00:00:00 UTC-3
dateTo: 05 may 2019 at 00:00:00 UTC-3
....
},
v7NC4GaxVOPe48ftstp1 : {
id:"v7NC4GaxVOPe48ftstp1"
status: 0
dateFrom: 29 april 2019 at 00:00:00 UTC-3
dateTo: 02 may 2019 at 00:00:00 UTC-3
....
}
}
文档有一个dateFrom 字段,表示用户可以开始处理该任务的第一个日期,还有一个dateTo 字段,表示用户必须完成该任务的最后一天。
我试图从 2019 年 4 月开始获取所有任务,这意味着 dateFrom 或 dateTo 属于本月/年的那些(在本例中,如果月份是 2019 年 4 月,它必须同时获取任务)。
在 Android 上,我得到所选月份的第一个日期 (startDate) 和所选月份的最后一个日期 (endDate),我正在尝试执行以下操作:
val missionsCollection = FirebaseFirestore.getInstance()
.collection("/users").document(uid).collection("tasks")
.whereGreaterThanOrEqualTo("dateFrom", startDate).whereLessThanOrEqualTo("dateTo", endDate)
但我收到一条错误消息,提示 All where filters other than whereEqualTo() must be on the same field. But you have filters on 'dateFrom' and 'dateTo'。
我想过一些解决方法,但它们看起来都很糟糕,即使我找不到一个好的解决方案,我相信一定有一个。
【问题讨论】:
标签: android firebase kotlin nosql google-cloud-firestore