Ich habe einen Knoten, den ich versuche, den Schlüssel des Werts zu erhalten. Der Knoten sieht wie folgt aus:Schlüsselwert, aber nicht den Root-Wert von Firebase
roomMembers
- "user1_user2" (roomname)
- user1: true
- user2: true
- "user1_user3"
- user1: true
- user2: true
Ich versuche, „user1_user2“ und „user1_user3“ durch beide abrufen und wissen mit .Value
und .ChildAdded
.
let membersRef = Firebase(url: self.dataURL + "/roomMembers")
membersRef.queryOrderedByChild("user1").observeSingleEventOfType(.Value, withBlock: { snapshot in
snapshot.value // returns the objects as `[String: [String:Bool]]`
snapshot.key // returns 'roomMembers'
})
Wenn ich .ChildAdded
verwenden, es gibt nur einen Wert
membersRef.queryOrderedByChild("user1").observeEventOfType(.ChildAdded, withBlock: { snapshot in
snapshot.key // returns the right level, but only returns "user1_user2".
snapshot.value // also returns only one value
Wie kann ich "user1_user2" und "user1_user3" (alle roomnames) mit einer einzigen Abfrage mit .Value
und .ChildAdded
bekommen?
Edit:
Angenommen, ich habe einen Knoten wie folgt aus:
lastMessages
- "user1_user2"
- -KJrqHaMzA9Hi-RS_ieV (timestamp'ed id)
- sender
- message
- opponent_seen
- "user1_user3"
- -KJrqHaMzA9Hi-RS_ieB
- sender
- message
- opponent_seen
Wie kann ich timestamped Schlüssel und ihre Werte zu erhalten?
Was ist das Problem bei der Verwendung von '.Value' Code, den Sie hinzugefügt haben? – Shubhank
In '.Value' gibt' snapshot.value' das gesamte Objekt als '[" user1_user2 ": [" user1 ": true," user2 "]," user1_user3 "zurück: [" user1 ": true," user2 " ]] ', und ich konnte nicht herausfinden, wie man nur die Zimmernamen bekommt. Außerdem denke ich, ich sollte 'observeEventType' nicht für' .Value' verwenden, da es nicht aufhört zu beobachten. Ich denke jedoch, dass ich ".ChildAdded" und ".ChildChanged" getrennt behandeln sollte. Ist das falsch? – senty
Verwenden Sie 'snapshot.value.allKeys()', um alle Raumnamen zu erhalten –