当我使用angular 2从Firestore查询数据时,我遇到了一些问题。
谁能帮我检查一下,告诉我哪里做错了?
我的错误:
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)
这是我的代码:
getTemp(uid): Observable<any> {
let temps = [];
var today = new Date();
return this.afs.collection<Temps>('temp', ref => ref.where('uid', '==', uid).orderBy('startedAt', 'desc')).snapshotChanges()
.map(actions => {
return actions.map(action => {
const data = action.payload.doc.data() as Temps;
console.log(data.temp);
return data.temp;
});
});
}
发布于 2017-12-25 22:42:15
发生此错误的原因是,默认情况下,Firestore不需要为只使用相等子句的查询创建额外的索引,因此情况并非如此。
要使您的查询工作,您只需单击错误消息的链接,并在Firebase控制台中为您的查询创建一个新索引。
要了解有关Firestore索引如何工作的更多信息,请阅读documentation.
发布于 2018-08-15 17:25:23
单击提供的链接。如果它没有将你带到正确的页面,如果你得到这个错误:
The project xxx either does not exist, or user doesn't have permission
注销当前用户,然后以Firebase用户身份登录。
您将获得为您的查询建议的索引。
包含特定值和范围或顺序的查询需要
复合索引。
当您运行这些查询时,它们的性能会很差,伸缩性也不会很好。
每次您使用不同的字段、组合range、等于或order by运算符更改查询时,都必须创建一个新的索引。如果只使用whereEqualTo运算符,则不需要这样做。
根据您的数据大小,创建索引可能需要一段时间。
发布于 2018-04-23 20:34:02
此错误也可能是因为您查询的某个字段在扫描的文档中不存在
https://stackoverflow.com/questions/47142392
复制相似问题