2017-10-04 1 views
0

Ma base de données firebase ressemble à ceRègles Firebase à lire Noeud Feuille/enfant spécifique de nœuds parents

"students" : { 
    "firebase_key_1" : { 
    "Name" : "blah blah", 
    "Address" : "blah blah", 
    "Roll No" : "blah blah", 
    "Marks" : { 
     "Sub1" : "blah", 
     "Sub2" : "blah", 
     "Sub3" : "blah", 
     "Total" : "Total", 
    }, 
    "class" : "blah blah", 
    "Transportation" : "blah blah", 
    "Department" : "blah blah", 
}, 
    "firebase_key_2" : { 
    "Name" : "blah blah", 
    "Address" : "blah blah", 
    "Roll No" : "blah blah", 
    "Marks" : { 
     "Sub1" : "blah", 
     "Sub2" : "blah", 
     "Sub3" : "blah", 
     "Total" : "Total", 
    }, 
    "class" : "blah blah", 
    "Transportation" : "blah blah", 
    "Department" : "blah blah", 
}, 
    "firebase_key_3" : { 
    "Name" : "blah blah", 
    "Address" : "blah blah", 
    "Roll No" : "blah blah", 
    "Marks" : { 
     "Sub1" : "blah", 
     "Sub2" : "blah", 
     "Sub3" : "blah", 
     "Total" : "Total", 
    }, 
    "class" : "blah blah", 
    "Transportation" : "blah blah", 
    "Department" : "blah blah", 
} 
} 

J'utilise reste api pour récupérer les données de firebase. url Restapi ressemble https://domain.firebaseio.com/students.json?orderby= "Marques/Total" & startat = 400

J'ai déjà indexé le total des étudiants via des règles Firebase. J'obtiens des résultats avec des données supplémentaires telles que le nom, la classe, le numéro de série.

Je veux que la sortie soit

"firebase_key_1" : { 
    "Marks" : { 
     "Sub1" : "blah", 
     "Sub2" : "blah", 
     "Sub3" : "blah", 
     "Total" : "Total", 
    } 
}, 
"firebase_key_2" : { 
    "Marks" : { 
     "Sub1" : "blah", 
     "Sub2" : "blah", 
     "Sub3" : "blah", 
     "Total" : "Total", 
    } 
}, 
"firebase_key_3" : { 
    "Marks" : { 
     "Sub1" : "blah", 
     "Sub2" : "blah", 
     "Sub3" : "blah", 
     "Total" : "Total", 
    } 
} 

Y at-il de toute façon de le faire via RestAPi ou règles.

est-il des règles que nous pouvons définir ce que les noeuds à lire par exemple

{ 
"users":{ 
    "students":{ 
     ".read" : ["$firebaseKey/Marks"], 
     ".write" : true, 
    } 
    } 

Alors que je peux utiliser pour récupérer le repos api les valeurs requises nœud parent.

Toute autre suggestion à faire sera merveilleuse.

Merci à l'avance

+0

Je ne comprends pas ce que vous essayez d'accomplir ici. Pouvez-vous éditer votre question pour montrer: 1) l'appel REST que vous voulez faire, 2) le JSON à cet endroit (comme texte), 3) le résultat que vous voulez revenir de l'appel? –

+0

J'ai modifié la question ci-dessus. – Prags

+0

Cette syntaxe n'est pas valide pour les règles: '" .read ": [" $ firebaseKey/Marks "]'. –

Répondre

1

La base de données Firebase renvoie toujours des nœuds complets. Il n'est pas possible d'obtenir un sous-ensemble de chaque nœud correspondant à votre requête. Soit le noeud entier est renvoyé, soit il n'est pas retourné.

Généralement, ce type de demande indique que vous avez fusionné plusieurs types de données que vous devez séparer. Dans votre cas, il semble que vous devriez avoir deux collections de haut niveau: students et studentMarks. Sous students vous gardez les propriétés pour chaque étudiant, saisies par leur ID d'étudiant. Sous studentMarks vous gardez les notes pour chaque étudiant, à nouveau avec leur identifiant d'étudiant.

Alors:

"students" : { 
    "firebase_key_1" : { 
    "Name" : "blah blah", 
    "Address" : "blah blah", 
    "Roll No" : "blah blah", 
    "class" : "blah blah", 
    "Transportation" : "blah blah", 
    "Department" : "blah blah", 
    }, 
    "firebase_key_2" : { 
    "Name" : "blah blah", 
    "Address" : "blah blah", 
    "Roll No" : "blah blah", 
    "class" : "blah blah", 
    "Transportation" : "blah blah", 
    "Department" : "blah blah", 
    }, 
    "firebase_key_3" : { 
    "Name" : "blah blah", 
    "Address" : "blah blah", 
    "Roll No" : "blah blah", 
    "class" : "blah blah", 
    "Transportation" : "blah blah", 
    "Department" : "blah blah", 
    } 
}, 
"studentMarks": 
    "firebase_key_1" : { 
    "Sub1" : "blah", 
    "Sub2" : "blah", 
    "Sub3" : "blah", 
    "Total" : "Total", 
    }, 
    "firebase_key_2" : { 
    "Sub1" : "blah", 
    "Sub2" : "blah", 
    "Sub3" : "blah", 
    "Total" : "Total", 
    }, 
    "firebase_key_3" : { 
    "Sub1" : "blah", 
    "Sub2" : "blah", 
    "Sub3" : "blah", 
    "Total" : "Total", 
    } 
} 

Puisque vous utilisez la même clé entre students et studentMarks vous deux ensembles de données pour un utilisateur peut facilement prêt. Mais maintenant, vous pouvez également lire uniquement les propriétés de chaque utilisateur ou simplement les marques d'un ensemble d'utilisateurs.

+0

Merci beaucoup, je vais changer la structure. – Prags

+0

Je pensais qu'il y aurait une syntaxe comme celle-ci ".read": ["$ firebaseKey/Marks"]. semblable à indexOn c'est pourquoi je pensais que je pourrais m'en tenir à cette structure. Quoi qu'il en soit, merci beaucoup. – Prags