FirebaseError:查询无效。所有过滤器都带有不等式

问题描述 投票:0回答:1

根据复合查询的文档我可以进行这样的查询

query(
  collection(db, 'users', user.value.id, 'leaderboard'),
  and(
    where('series.seriesStartDate', '<=', new Date()),
    where('score', '>', 0),
  ),
  limit(5)
)

我已经做了索引了enter image description here

并测试了它在仪表板上运行的查询 enter image description here

但是当我在应用程序中进行查询时,它不起作用并且出现错误

FirebaseError:查询无效。所有具有不等式(<, <=, !=, not-in, > 或 >=)的 where 过滤器必须位于同一字段上。但是你在“series.seriesStartDate”和“score”上有不等式过滤器

我做错了什么?

firebase google-cloud-firestore
1个回答
0
投票

您的屏幕截图显示您为嵌套在以“CAU”开头的用户文档 ID 下的一个特定排行榜子集合创建了索引。 该索引不适用于任何其他集合或子集合的查询,仅适用于该用户的排行榜子集合。

如果您想执行此查询,您必须:

  1. 在排行榜上使用集合组查询,而不是普通集合查询。
  2. 将文档 ID 作为字段添加到每个用户的排行榜子集合中的每个文档中。
  3. 在排行榜集合组上创建相关索引(不仅仅是一个嵌套子集合)。
  4. 在您的查询中添加过滤器,以查找您要考虑其文档的文档 ID。

要么您必须将所有文档从所有排行榜子集合移动到新的顶级集合,同时提供用户 ID 作为过滤字段。

© www.soinside.com 2019 - 2024. All rights reserved.