使用数组包含和范围过滤器 JavaScript 的 Firebase 查询



我正在尝试查询具有特定类型和用户评级的文档。

在文档中,genres 是一个数组 [],userRating 是 5 中的数字。

这是我的查询:

q = query(
ColRef,
where("genres", "array-contains", "Comedy"),
where("userRating", ">=", 3)   
);

我在运行时收到此错误

FirebaseError: [code=failed-precondition]

火力基地文档说

您只能对单个字段执行范围 (<、<=、>、>=) 或不等于 (!=) 比较,并且最多可以在复合查询中包含一个数组包含或数组包含任意子句:

我使用一个数组包含和一个不等于,或者我不明白它们的意思是数组包含也被视为范围过滤器?

如前所述,您需要一个复合索引来支持此查询:

[genres - Arrays, userRating - Ascending]

默认情况下,查询将根据userRating的值按升序对结果进行排序。但是您的索引模式DescendinguserRating,因此第一个索引不起作用。

如果您指定了按降序对结果进行排序orderBy('userRating', 'desc')则该索引将支持您的查询。

您可以在文档中阅读有关此内容的更多信息。

最新更新