未捕获(承诺)错误:查询需要索引

时间:2018-02-09 04:01:39

标签: javascript firebase vuejs2 google-cloud-firestore

一旦我添加了Where方法,我就会收到此错误,但它在没有Where子句的情况下工作。在集合中,每个文档都有名为" status"的布尔值。

db.firestore().collection('jobs').where("status","==",true).orderBy("createDate").limit(10).get().then(querySnapshot =>{

        })
      })

感谢所有帮助。谢谢!

2 个答案:

答案 0 :(得分:1)

由于您要查询两个字段(statuscreateDate),因此需要在这两个字段上添加综合索引。单个字段的索引会自动创建,但只有在您要求时才会创建复合索引。

错误消息应包含直接指向控制台的链接以完成该任务。如果情况并非如此,您可以创建here

答案 1 :(得分:0)

对两个以上字段的Firestore查询需要在该两个字段上提供综合索引。

所以你必须创建复合索引statuscreateDate。当你没有索引时,你会得到如下的错误。

ERROR Error: The query requires an index. You can create it here: https://console.firebase.google.com/project/admin-e8a7b/database/firestore/indexes?create_index=EgR0ZW1wGgcKA3VpZBACGg0KCXN0YXJ0ZWRBdBADGgwKCF9fbmFtZV9fEAM
at new FirestoreError (vendor.bundle.js:19925)

因此,当您单击此链接时,将自动创建错误索引。

您也可以从firebase console

手动创建索引

要将等于运算符(==)与范围比较(<,< =,>或> =)合并,请确保创建自定义索引。