2017-06-27 1 views
0

J'ai la structure de données suivante dans la base de données en temps réel Firebase.Comment puis-je définir ".indexOn" pour toutes les clés enfants dans Firebase?

{ 
    groups: { 
     $groupid: { 
     $userid: Boolean 
     } 
    } 
} 

Ici #groupid et $userid varient.
Lorsqu'un utilisateur id « user0 » est dans le groupe « group0 », il sera

{ 
    groups: { 
    ... 
    group0: { 
     user0: true 
    } 
    ... 
    } 
} 

Lorsque l'utilisateur est supprimé, il sera user0: false. Quand j'Interrogation de groupes avec un utilisateur spécifique, Firebase SDK affiche un avertissement: FIREBASE WARNING: Using an unspecified index. Consider adding ".indexOn": "user0" at /groups to your security rules for better performance

Comme l'ID utilisateur varie, je pense que tous les codes d'utilisateur doivent être indexées sur.
Comment puis-je écrire une règle de sécurité pertinente?

+2

Il n'existe aucun moyen de définir un index générique. Vouloir le faire signifie généralement que vous avez inversé votre structure de données. Le vôtre ressemble au problème de catégorisation que j'ai répondu ici: http://stackoverflow.com/questions/40656589/firebase-query-if-child-of-child-contains-a-value –

Répondre

0

Si vous souhaitez interroger des groupes avec un utilisateur spécifique, il est préférable de demander à un utilisateur de gérer la liste des groupes.

{ 
    user-groups: { 
     user0: { 
      group0: true, 
      group1: true 
     } 
    } 
} 

Ainsi, un groupe a ses membres et un utilisateur a des groupes auxquels il appartient.