我有以下查询根据所需类别返回项目列表,并且日期创建的项目大于或等于我提供的值。
return this.firestore.col$('Items', ref =>
ref.where(required.programming, '>', 0)
.where('name', '==', itemName)
.where('createdAt', '>=', this.mostRecentDate)
.orderBy("createdAt", "asc").limit(50))
)
由于firebase不查询数组字段,我不得不将我的数据结构化为键对象。 firebase提供的解决方法是提供一个结构,其中每个类别是映射中的键,值是unix时间戳(因此可以将它们编入索引)。
现在的问题是Firebase无法处理不同字段的多个范围比较。
you can only perform range comparisons (<, <=, >, >=) on a single field:
这个问题会有什么好处?
答案 0 :(得分:0)
您尝试过滤required.programming
范围和"createdAt"
范围内的范围。 Firestore告诉你,这不会起作用。
为了能够保持其性能保证,Firestore必须能够在索引中的单个范围内查找结果。如果您尝试过滤两个不相关的字段,那是不可能的。
没有简单的解决方法,否则它可能已经在数据库中实现了。