2017-03-29 5 views
0

Ich denke über den Aufbau einer mobilen App nach, die Daten basierend auf den vom Benutzer bereitgestellten Tags abrufen kann.Wie kann man Kinder abrufen, die einen bestimmten Wert haben?

Die App ist über einige Geschenke basierend auf Benutzereingabe vorschlagen. Zum Beispiel wählt ein Benutzer Tags: "männlich", "Geburtstag", "unter 30". Die API sollte eine Liste von Elementen bereitstellen können, die diesen Kriterien entsprechen.

{ 
    "gifts" : { 
    "\"93c08520-14ea-11e7-855f-e957e315db04\"" : { 
     "Description" : "SomeDescription", 
     "Name" : "Some GIFT", 
     "Tags" : [ "wedding", "graduation", "Easter" ], 
     "id" : "93c08520-14ea-11e7-855f-e957e315db04" 
    }, 
    "\"93d48250-14ea-11e7-855f-e957e315db04\"" : { 
     "Description" : "SomeDescription", 
     "Name" : "Some GIFT", 
     "Tags" : [ "birthday", "graduation", "anniversary" ], 
     "id" : "93d48250-14ea-11e7-855f-e957e315db04" 
    }, 
    "\"93e487e0-14ea-11e7-855f-e957e315db04\"" : { 
     "Description" : "SomeDescription", 
     "Name" : "Some GIFT", 
     "Tags" : [ "graduation", "wedding", "birthday" ], 
     "id" : "93e487e0-14ea-11e7-855f-e957e315db04" 
    } 
} 

kam ich mit dieser irgendwie der Struktur mit Feuerbasis auf und spielen etwa mit orderByValue und OrderByKey.

Bitte schlagen Sie einige Möglichkeiten vor, um meine Daten und Möglichkeiten zum Abrufen mithilfe von Firebase Query Param (RESTful) zu bestellen.

+1

Bitte posten Sie in Zukunft Ihre Firebase-Struktur bitte als Text, keine Bilder. Der Text ist durchsuchbar und wir können ihn kopieren und in eine Antwort einfügen, ohne ihn erneut eingeben zu müssen. Sie können den Text über das Firebase-Dashboard-> 3 Punkte in der oberen rechten Ecke abrufen und JSON exportieren. – Jay

+0

sicher. Aktualisierung der Frage – Vkrm

Antwort

2

Vermeiden Sie die Verwendung von Arrays. Sie sind sehr begrenzt; auf einzelne Elemente kann nicht zugegriffen werden, und wenn Sie etwas im Array hinzufügen, bearbeiten oder löschen müssen, muss das gesamte Array aktualisiert und neu geschrieben werden. Siehe Arrays Are Evil.

Um die Frage zu beantworten; Wenn Sie nach mehr als einem Parameter abfragen möchten, müssen Sie entweder

1) Nest your queries - can get quite complex 
2) Filter in code - with a large dataset can be to much 
3) Combine your parameters into a single child. 

Hier ist der 3) Weg. Angenommen, Sie eine bestimmte Anzahl von Tags haben:

male 
female 
birthday 
age 

und eine Struktur

Gifts 
    gift_0 
    desc: "asdas" 
    name: "assad" 
    male: true 
    birthday: true 
    age: 30 
    query: male_birthday_30 
    gift_1 
    desc: "asdas" 
    name: "assad" 
    female: true 
    anniversary: true 
    age: 28 
    query: female_anniversary_28 
    gift_2 
    desc: "asdas" 
    name: "assad" 
    male: true 
    birthday: true 
    age: 35 
    query: male_birthday_35 

Mit dieser Struktur Sie bequem alle Geschenke für Männer abfragen oder Frauen, Geschenke für die Menschen eines bestimmten Alters oder im Alter zwischen oder für Geburtstag oder Jahrestag.

Die Abfrage Kindknoten ermöglicht es Ihnen, dass die Möglichkeit für male_birthday Geschenke oder female_annivesary Geschenke abzufragen, um zu erweitern, sondern ermöglicht es Ihnen auch eine Reihe von Altersgruppen zu erfassen: (hier einige Pseudo-Code)

query.startingAt("male_birthday_30").endingAt("male_birthday_35") 

Sie können das mit einem kleinen Querverweis weiter ausbauen. Lassen Sie uns ein paar Variablen definieren für verschiedene Kombinationen von Ereignissen stehen ...

combo0 = birthday 
    combo1 = birthday and anniversary 
    combo2 = birthday and anniversary and graduation 

dann ein Geschenk Knoten wie dieses

gift_0 
    desc: "asdas" 
    name: "assad" 
    male: true 
    birthday: true 
    anniversary: true 
    age: 30 
    query: male_combo1_30 

und die Abfrage

query.startingAt("male_combo1_30").endingAt("male_combo1_35") 

aussehen würde, die zurückkehren alle Geschenke für Männer, die für Geburtstag und Jahrestag geeignet sind, die zwischen 30 und 35 sind.

Mit dieser Technik können Sie einige sehr komplexe Fragen stellen.

Verwandte Themen