2017-07-25 2 views
0

J'ai lu la documentation Firebase sur les règles et la validation des nouvelles données écrites dans la base de données. Il y a une ligne où je ne comprends pas une certaine chose. Voici les règles du code de base de feu Firebase Documentation.Données de validation des règles Firebase

{ 
    "rules": { 
    ".write": true, 
    "widget": {rules) 
     ".validate": "newData.hasChildren(['color', 'size'])", 
     "size": { 
     ".validate": "newData.isNumber() && 
         newData.val() >= 0 && 
         newData.val() <= 99" 
     }, 
     "color": { 
     // the value of "color" must exist as a key in our mythical 
     // /valid_colors/ index 
     ".validate": "root.child('valid_colors/' + newData.val()).exists()" 
     } 
    } 
    } 
} 

".validate": "root.child('valid_colors/' + newData.val()).exists()" est là que je ne comprends pas ce qu'il est et ce qu'il fait.

  • Qu'est-ce que le root.child? Est-il utilisé pour accéder à l'enfant de la couleur?
  • Qu'est-ce que newData.val()).exists()? Dans quoi exists() est-il utilisé?

Répondre

2

Lorsque vous utilisez "root", il remonte tout en haut. Imaginez une base de données comme ceci:

Database: 
-users 
    -uid's 
    -username 
-valid colors 
    -blue 
    -red 

Quand vous dites root.child("users"), vous allez dans la carte qui contient les utilisateurs.

Et quand vous dites root.child("valid colors/blue") ira regarder dans cette sous-carte de couleurs valides.

Existe vérifier s'il existe dans la base de données. newData représente les données que vous voulez entrer. Si vous voulez entrer "vert", cela échouera. En effet, si votre JSON ressemble à ceci:

"color" : green 
newData.val() = green 

Est-ce qu'il existe dans votre base de données? Non, pas dans l'exemple fourni. C'est pourquoi cela échouera. La couleur bleue existe dans votre base de données. Lorsque vous entrez cela comme vos nouvelles données, il passera la règle.

+0

Merci, ça aide vraiment! – UmarZaii