Angularfire2 - 带有参数的查询表

时间:2016-11-01 16:45:37

标签: angular angularfire2

我正在尝试检索所有带有某个键的参数的项目。

这是使用检索到的项填充数组的函数:

    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以获得更好的性能

2 个答案:

答案 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