gpt4 book ai didi

firebase - 带有 <= & >= 的 Firestore 复合查询

转载 作者:行者123 更新时间:2023-12-01 11:15:29 25 4
gpt4 key购买 nike

我需要在 Firestore 集合中查询开始时间(这是一个数字)是 >= slot.start<= slot.end 的条目。

像这样:

.collection('Entries', ref => ref.where('timeStart', '>=', slot.timeStart).where('timeEnd', '<=', slot.timeEnd))

但我收到此错误:
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))

我可以为它创建一个索引。此外,当我将第二个 '<=' 更改为 '==' 时,我什至不需要它的索引。

我不认为我的查询那么高级,我对 firestore 无法执行此查询感到有点失望。那么我的问题的最佳解决方案是什么?像这样省略第二个查询语句是下一个最好的选择
.collection('Entries', ref => ref.where('timeStart', '>=', slot.timeStart))

然后遍历结果并检查 timeEnd <= entry.timeEnd 是否“手动”?这对我来说似乎是一个非常糟糕的解决方案,因为那时我可能需要加载大量数据。

最佳答案

您将不得不选择一个字段并查询该字段,然后在客户端过滤掉另一个字段。 Compound Queries 文档在这一点上是坚定的。

You can only perform range comparisons (<, <=, >, >=) on a single field, and you can include at most one array_contains clause in a compound query:

关于firebase - 带有 <= & >= 的 Firestore 复合查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52065946/

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