我正在尝试检索所有带有某个键的参数的项目。
这是使用检索到的项填充数组的函数:
this.subscription = this.activatedRoute.params.subscribe(
(param: any) => {
let postId = param['id'];
console.log(postId);
this.postsService.subscribePostReplies(postId)
.do(console.log)
.subscribe(posts => { this.posts = posts; this.cdr.detectChanges(); });
});
以下是服务中的方法:
subscribePostReplies(postKey: string) {
return this.af.database.list('posts', {
query: {
orderByChild: 'repliedTo',
equalTo: postKey
}
});
}
问题是当查询发生时页面刷新,我也会收到以下警告: FIREBASE警告:使用未指定的索引。考虑在您的安全规则中添加“.indexOn”:“repliedTo”/ post以获得更好的性能
答案 0 :(得分:1)
你的警告几乎可以说清楚。
警告:使用未指定的索引。考虑在您的安全规则中添加“.indexOn”:“repliedTo”/ post以获得更好的性能
".indexOn": "repliedTo"
@ /posts
看起来像这样:
{
"rules": {
".read": true,
".write": true,
"posts": {
".indexOn": "repliedTo"
}
}
}
请记住,这只是一个警告,并且开发不需要indexOn。
除非您使用REST API,否则开发不需要索引。实时客户端库可以在不指定索引的情况下执行即席查询。随着查询数据的增长,性能会下降,因此,如果您预计会查询大量数据,则在启动应用程序之前添加索引非常重要。
答案 1 :(得分:0)
只需添加.indexOn规则,如firebase文档中所述
https://firebase.google.com/docs/database/security/indexing-data