Querying in Firebase von Kind zu Kind

Ich habe eine Struktur von Objekten in Firebase, die so aussieht:

-KBP27k4iOTT2m873xSE
    categories
        Geography: true
        Oceania: true
    correctanswer: "Yaren (de facto)"
    languages: "English"
    question: "Nauru"
    questiontype: "Text"
    wronganswer1: "Majuro"
    wronganswer2: "Mata-Utu"
    wronganswer3: "Suva"

Ich versuche, Objekte nach Kategorien zu finden, also möchte ich zum Beispiel alle Objekte, deren Kategorie auf "Ozeanien" eingestellt ist.

Ich benutze Swift und kann das Konzept der Datenabfrage nicht wirklich verstehen.

eine Suchanfrage sieht momentan so aus:

ref.queryEqualToValue("", childKey: "categories").queryOrderedByChild("Oceania")

Woref ist der Verweis auf Firebase in diesem bestimmten Pfad.

Jedoch was auch immer ich versucht habe, ich bekomme immer ALLE Daten zurück, anstatt nur die Objekte mit der Kategorie Ozeanien.

Meine Daten sind folgendermaßen aufgebaut:baseurl/questions/

Wie Sie im Objektbeispiel sehen können, können zu einer Frage mehrere Kategorien hinzugefügt werden. Nach meinem Verständnis ist es daher am besten, einen Verweis auf die Kategorien in Ihren Objekten zu haben.

Ich könnte meine Struktur auf @ ändebaseurl/questions/oceania/uniqueids/, aber dann würde ich mehrere Einträge mit den gleichen Daten erhalten, aber mit unterschiedlichenuniqueid, weil die Frage in beiden Kategorien vorhanden wäreoceania undgeography.

Mit der Strukturbaseurl/questions/oceania/ undbaseurl/questions/geography Ich könnte auch nur hinzufügenunique ids unteroceania undgeography das auf ein bestimmtes @ verweiunique id Innerhalbbaseurl/questions/uniqueids stattdessen, aber das würde bedeuten, dass ich viele Referenzen nachverfolgen müsste. Sozusagen eine Relationstabelle erstellen.

Ich frage mich, ob das der richtige Weg ist oder? Sollte ich meine Daten umstrukturieren? Die App ist noch nicht in der Produktion, daher ist es möglich, die Daten vollständig zu restrukturieren, ohne größere Konsequenzen, außer dass ich meinen Code neu schreiben muss, der die Daten an Firebase überträgt.

Lassen Sie mich wissen, wenn all dies keinen Sinn ergibt und die Textwand nicht zu entschuldigen ist: -)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage