firebase indexOn для дочерних значений - PullRequest
0 голосов
/ 06 июля 2018

Я пытаюсь получить все сообщения с настроением, равным M1, используя Firebase Query, как показано ниже:

db.ref(`Recommendations`).orderByChild(`post/vote/moodTags/${idMood}/key`).equalTo(`${idMood}`).once('value').then(recs =>{
        //Número de recs con el mood
        let recsCount = recs.numChildren();
        console.log(`Número de recs encontradas --> ${recsCount}`);
        ...
    });

и консоль Firebase показывают предупреждение:

ПРЕДУПРЕЖДЕНИЕ О ПОЖАРЕ: использование неопределенного индекса. Ваши данные будут загружены и отфильтрованы на клиенте. Попробуйте добавить в свои правила безопасности «.indexOn»: «post / Голосование / moodTags / M1 / ​​key» в / Рекомендации для повышения производительности.

но мое правило индексации на сайте firebase:

"Recommendations":{
  ".indexOn": ["post/userFirebaseKey","post/user/firebaseKey","userFrom/firebaseKey","post/location/placeId","firebaseKey","placeId"],
  "post":{
    "vote":{
      "moodTags":{
        "$moodId":{
          ".indexOn": "key"
        }
      }
    }
  }
}

Итак, как я могу на самом деле указать правило indexOn, когда я использую дочерний уровень?

my db:

+ Recommendations
  + idRec
    property1:''
    property2:''
    property3:''
    + post
      property21:''
      ...
      + vote
        + moodTags
          + M1
            key:'M1'
            name:''
            url:''
          + M2        
            ...

1 Ответ

0 голосов
/ 26 июля 2018

Кажется, вы используете слишком глубокий уровень: в конце концов вы хотите проиндексировать список тегов настроения , а не содержимое one moodTag.

Это означает, что ваши правила должны выглядеть примерно так:

"Recommendations":{
   ".indexOn": ["post/userFirebaseKey","post/user/firebaseKey","userFrom/firebaseKey","post/location/placeId","firebaseKey","placeId"],
  "post":{
    "vote":{
      "moodTags":{
          ".indexOn": "key"
        }
      }
    }
  }
}

Вы можете прочитать об этих правилах индексации в официальных Документах Google Firebase , также в этой полезной статье на Среднем и в этой публикации групп Google, где кто-то имел аналогичная проблема .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...