gpt4 book ai didi

javascript - 为什么这个 firestore 查询需要索引?

转载 作者:行者123 更新时间:2023-12-01 14:50:34 26 4
gpt4 key购买 nike

我有一个 where() 的查询带有相等运算符的方法,然后是 orderBy()方法,我不知道为什么它需要索引。
where 方法检查对象(映射)中的值,并且 order by 使用数字。

文件说

If you have a filter with a range comparison (<, <=, >, >=), your first ordering must be on the same field



所以我会认为平等过滤器会很好。

这是我的查询代码:
this.afs.collection('posts').ref
.where('tags.' + this.courseID,'==',true)
.orderBy("votes")
.limit(5)
.get().then(snap => {
snap.forEach(doc => {
console.log(doc.data());
});
});

这是一个数据库结构的例子
enter image description here

最佳答案

Why does this Firestore query require an index?


您可能已经注意到,Cloud Firestore 中的查询非常快,这是因为 Firestore 会自动为您在文档中的任何字段创建索引。因此,当您简单地使用范围比较进行过滤时,Firestore 会自动创建所需的索引。如果您还尝试对结果进行排序,则需要另一个索引。这种索引是 不是 自动创建。您应该自己创建它。这可以通过在您的 Firebase Console 中手动创建来完成。或者您会在日志中找到一条听起来像这样的消息:
FAILED_PRECONDITION: The query requires an index. You can create it here: ...
您只需单击该链接或将 URL 复制并粘贴到 Web 浏览器中,您的索引就会自动创建。
所以 Firestore 需要一个索引,这样您就可以进行非常快速的查询。

关于javascript - 为什么这个 firestore 查询需要索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53790175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com