2016-11-01 1 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 
     } 
    }); 
} 

Проблема страница обновляется, когда запрос происходит, и я также получите предупреждение: ПРЕДУПРЕЖДЕНИЕ FIREBASE: Использование неуказанного индекса. Рассмотрим добавление «.indexOn»: „repliedTo“ в/сообщения в правилах безопасности для лучшей производительности

ответ

1

Ваше предупреждение в значительной степени выговаривать это вне.

ВНИМАНИЕ: Использование неуказанного индекса. Рассмотрим добавление ".indexOn": "repliedTo" в/сообщений к вашим правилам безопасности для лучшей производительности

".indexOn": "repliedTo" @/posts будет выглядеть примерно так:

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

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

Запомнить, это просто предупреждение, а indexOn не требуется для разработки.

Индексы не требуются для разработки, если вы не используете API REST. Клиентские библиотеки реального времени могут выполнять специальные запросы без указания индексов. Производительность будет ухудшаться по мере роста запросов, которые вы запрашиваете, поэтому важно добавить индексы перед запуском приложения, если вы ожидаете запроса большого набора данных.

+0

Я тоже получаю это предупреждение. Мои правила базы данных правильно определяют '.indexOn', как вы описали здесь. Предупреждение исчезает, если вы удаляете 'equalTo'. –

+0

Не знаете, почему вы бы удалили 'equalTo', так как это вся точка запроса, которую пыталась достичь @Pete. – ksav

+1

О, я не хочу удалять 'equalTo' - это важно, конечно. Это значит, что предупреждение исчезнет, ​​если вы это сделаете. Однако, я решил свою проблему правильно, сейчас. Я не опубликовал изменения правил (локальный файл JSON) для Firebase. Ошибка новичков. –