Firebase多范围查询围绕

时间:2018-04-22 11:35:30

标签: javascript firebase google-cloud-firestore angularfire2

我有以下查询根据所需类别返回项目列表,并且日期创建的项目大于或等于我提供的值。

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:

这个问题会有什么好处?

1 个答案:

答案 0 :(得分:0)

您尝试过滤required.programming范围和"createdAt"范围内的范围。 Firestore告诉你,这不会起作用。

为了能够保持其性能保证,Firestore必须能够在索引中的单个范围内查找结果。如果您尝试过滤两个不相关的字段,那是不可能的。

没有简单的解决方法,否则它可能已经在数据库中实现了。