2017-01-13 1 views
0

Firebase DatenstrukturNested Key Abfrage in Firebase?

{ 
    "books": { 
    "-KaKjMMw-WQltqxrGEmj": { 
     "categories": { 
     "cat1": true, 
     "cat2": true 
     }, 
     "author": "user1", 
     "title": "event1" 
    }, 
    "-KaKjMMw-WQltqxrGEmk": { 
     "categories": { 
     "cat1": true, 
     "cat2": false 
     }, 
     "author": "user1", 
     "title": "event2" 
    } 
    } 
} 

Abfrage, um alle Bücher eines bestimmten Autors zu finden

FNode.testNode.child("books") 
    .queryOrderedByChild("author") 
    .queryEqualToValue("user1") 
    .observeEventType(.Value) { (snapshot) in 
    print(snapshot) 
} 

Frage:

Ich möchte alle Bücher finden gehören, zu cat1. Konnte die Abfrage dazu nicht herausfinden.

+0

Tut uns leid, die Datenstruktur wurde aktualisiert! Etwas verändert, um meinen ursprünglichen Zweck von Daten zu verbergen, indem ich Schlüssel ändere. Fehlgeschlagen. Mein Fehler ! : D –

Antwort

1

Nach einer Menge von Hit und Probe, endlich meine Antwort bekommen.

Für die obige Struktur. Wenn Sie alle Bücher finden wollen zu cat1 gehör Hier ist die Abfrage für das:

FNode.testNode.child("books") 
    .queryOrderedByChild("categories/cat1").queryEqualToValue(true) 
    .observeEventType(.Value) { (snapshot) in 
    print(snapshot) 
} 

Hinweis: FNode.testNode jeder Knoten vom Typ sein könnte FIRDatabaseReference

An Firebase Team: Können Sie bitte ein Beispiel aller möglichen Firebase-Abfragen in Datenstrukturen einfügen und diese zusammen mit Firebase-Dokumenten ablegen. Es ist jetzt eine Art von Hit-and-Trial für uns.

+1

Dies funktioniert, bedeutet aber, dass Sie [in Ihren Firebase-Sicherheitsregeln einen Index definieren] (https://firebase.google.com/docs/database/security/indexing-data) für jede Kategorie definieren müssen. Für eine wartungsfreundlichere Lösung, siehe meine Antwort hier: http://stackoverflow.com/questions/40656589/firebase-query-if-child-of-child-contains-a-value –

+0

Sicher danke für den Link. –

+0

Auch, was ist der Nachteil der Abfrage ohne Indexe in Datenbankregeln setzen? Wird es wirklich langsam sein? –