Jon*_*nas 10 firebase google-cloud-firestore
我需要在 Firestore 集合中查询开始时间(这是一个数字)是>= slot.startand 的条目<= slot.end。
像这样:
.collection('Entries', ref => ref.where('timeStart', '>=', slot.timeStart).where('timeEnd', '<=', slot.timeEnd))
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:
Invalid query. All where filters with an inequality (<, <=, >, or >=) must be on the same field.
我认为这个查询可以与复合索引一起使用,但正如错误所说,这不起作用。
当我将查询更改为:
.collection('Entries', ref => ref.where('timeStart', '==', slot.timeStart).where('timeEnd', '<=', slot.timeEnd))
Run Code Online (Sandbox Code Playgroud)
我可以为它创建一个索引。此外,当我将第二个 '<=' 更改为 '==' 时,我什至不需要它的索引。
我不认为我的查询那么高级,我对 firestore 无法执行此查询感到有些失望。那么我的问题的最佳解决方案是什么?像这样省略第二个查询语句是下一个最好的选择
.collection('Entries', ref => ref.where('timeStart', '>=', slot.timeStart))
Run Code Online (Sandbox Code Playgroud)
然后遍历结果并检查是否timeEnd <= entry.timeEnd“手动”?这对我来说似乎是一个非常糟糕的解决方案,因为那时我可能需要加载大量数据。
| 归档时间: |
|
| 查看次数: |
8585 次 |
| 最近记录: |