Firebase Firestore 查询:"Error: 9 FAILED_PRECONDITION: The query requires an index. You can create it



我有一个我认为是对一个名为"电子邮件"的集合的简单查询:

const emailQuery = admin
.firestore()
.collection('email')
.where('sendAt', '>=', new Date())
.where('orderId', '==', doc.orderId)
.where('brandId', '==', doc.brandId);

我在这篇文章的主题中收到错误,表明我需要为此查询创建一个索引。我尝试为相关字段创建一对,但我不确定为什么需要它,因为只有一个字段是有序的——尽管有这些索引,错误仍然存在:

sendAt -> Ascending, brandId -> Ascending, orderId -> Ascending
sendAt -> Descending, brandId -> Ascending, orderId -> Ascending

如您所见,我没有指定orderBy。此外,sendAt是一个日期,而其他两个是不需要排序的简单字符串。

我需要什么样的索引,或者如何克服这个错误?

谢谢!

从文档中:

如果尝试使用未映射的范围子句进行复合查询 对现有索引,您会收到错误。错误消息包括 用于在 Firebase 控制台中创建缺失索引的直接链接。

换句话说:当您使用涉及<>的比较时,该字段的查询中存在隐式排序。 与其他字段的条件结合使用时,特定集合 ID 需要索引。

您开始在问题标题中引用的错误消息应包含指向控制台的链接,该控制台将为该查询创建所需的索引。 只需点击该链接并授权创建索引即可。

相关内容

  • 没有找到相关文章

最新更新