2016-11-01 7 views
3

特定のキーを持つパラメータを持つすべてのアイテムを取得しようとしています。ここで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 
     } 
    }); 
} 

問題は、クエリが発生し、Iときにページが更新されています FIREBASE WARNING:不特定のインデックスを使用しています。 「.indexOn」を追加することを検討してください:パフォーマンス向上のためにあなたのセキュリティルールに/ポストで 『repliedTo』

答えて

1

あなたの警告はかなりの呪文それはでる。

警告:不特定のインデックスを使用しています。 ".indexOn" を追加することを検討してください:パフォーマンス向上のためにあなたのセキュリティルールに/ポストで "repliedTo"

".indexOn": "repliedTo"/posts @意志は、このようなものになります。

{ 
 
    "rules": { 
 
    ".read": true, 
 
    ".write": true, 
 

 
    "posts": { 
 
     ".indexOn": "repliedTo" 
 
    } 
 
    } 
 
}

を覚えて、これは単なる警告であり、indexOnは開発に必須ではありません。

REST APIを使用している場合を除き、索引は開発には必要ありません。リアルタイムクライアントライブラリは、インデックスを指定せずにアドホッククエリを実行できます。クエリのデータが大きくなるとパフォーマンスが低下するため、大量のデータをクエリする場合は、アプリケーションを起動する前にインデックスを追加することが重要です。

+0

私もこの警告を受けています。ここで説明したように、データベースのルールは '.indexOn'を正しく指定します。 'equalTo'を削除すると警告が消えます。 –

+0

@Peteが達成しようとしていたクエリのポイント全体であるため、 'equalTo'を削除する理由がわかりません。 – ksav

+1

ああ、私は 'equalTo'を取り除きたくありません - それはもちろん必須です。もしあなたがそうしたら、警告が消えるだけです。 しかし、私は問題を適切に解決しました。ルールの変更(ローカルJSONファイル)をFirebaseに公開していませんでした。ルーキーミス。 –

関連する問題