web-dev-qa-db-fra.com

Avertissement Firebase: Utilisation d'un index non spécifié

Je reçois ce message d'avertissement de Firebase pour chaque orderByChild j'ai utilisé dans mes requêtes à partir de JavaScript:

AVERTISSEMENT FIREBASE: Utilisation d’un index non spécifié. Envisagez d'ajouter ".indexOn": "" at/tables à vos règles de sécurité pour de meilleures performances.

Jusqu'à présent, mes requêtes ont fonctionné assez rapidement, donc je pense qu'il n'est pas nécessaire d'inclure la variable indexOn. Je me demande simplement quels sont les impacts négatifs?

Aussi, comment puis-je désactiver les avertissements, car ils sont assez irritants lorsque je débogue. 

12
hyperfkcb

Si vous êtes en phase de développement, vous ne sentirez pas la différence. Mais au fur et à mesure que vos données grandissent, l'indexation vous permet de rendre vos requêtes beaucoup plus rapidement.

Lisez ceci pour en savoir plus sur les avantages de l'indexation . https://firebase.google.com/docs/database/security/indexing-data

Autant que je sache pour désactiver les avertissements, vous devez éditer le code source de Firebase . Est-il possible de désactiver toute la journalisation de Firebase sur la console?

10
Anand Mohan

Comme d'autres l'ont déjà dit: si vous ne définissez pas d'index, tout le filtrage est effectué côté client. Cela convient probablement au cours du développement initial, mais plus vous ajoutez de données, plus le gaspillage est important.

Pour résoudre le problème, définissez le bon index dans les règles de votre base de données Firebase. Vous pouvez modifier les règles dans le panneau Base de données de la console Firebase de votre projet . Voir définition des index de données dans la documentation de Firebase.

Existe-t-il un moyen pour moi d'observer ce qui a changé grâce à l'indexation?

  1. Une fois que vous avez défini le bon index, l'avertissement disparaît de votre console JavaScript. 
  2. De plus, vous pouvez surveiller le trafic entre le client Firebase et le serveur dans l'onglet Réseau des outils de développement de votre navigateur. Avant de définir le bon index, vous constaterez que le client Firebase télécharge toutes les données de l'emplacement (puisqu'il effectue le filtrage localement). Une fois que vous avez défini le bon index, vous constaterez que le client Firebase télécharge uniquement les données correspondant à la requête.
7
Frank van Puffelen

Firebase fournit des outils puissants pour la commande et l'interrogation de vos données. L'indexation peut améliorer les performances de nos requêtes. considérons une table appelée dinosaur contient des données telles que:

{
  "lambeosaurus": {
    "height" : 2.1,
    "length" : 12.5,
    "weight": 5000
  },
  "stegosaurus": {
    "height" : 4,
    "length" : 9,
    "weight" : 2500
  }
}

Vous devez (rechercher) la taille et la longueur des dinosaures, mais jamais en poids. vous devez donc définir une règle pour la table dinosaur comme:

"rules": {
  "dinosaurs": {
    ".indexOn": ["height", "length"]
  }
}

En communiquant ces informations à Firebase, Firebase peut utiliser ce .indexOn pour optimiser nos requêtes en hauteur et en longueur. Nous avons ensuite maintenu la sécurité Firebase pour interroger nos données et améliorer également les performances de nos requêtes.

1
Ikram - Ud - Daula