I want to get a user corresponding to an event
I have a list of Events
let eventsRef = FIRDatabase.database().reference.child("Events") I have a list of Users
let usersRef = FIRDatabase.database().reference.child("Users") My Event and User model is as below
- Events
- Event1
- eventHost: user1_uid
- Event2
- eventHost: user2_uid
- Event1
- Users
- User1
- email: email1
- User2
- email: email2
- User1
The following callback (in the Event model) is never invoked:
if let userKey = eventData["eventHost"] as? String { userRef = usersRef.child(userKey) userRef.observeSingleEvent(of: .value, with: { snapshot in ... }) } I can confirm that I have not enabled disk persistence and that user uid is available. Is there anything I am doing obviously wrong?
====== EDIT: The simplified event model
import Foundation import Firebase class Event { // event metadata private var _eventId: String! private var _eventHost: User! var eventId: String { return _eventId } var eventHost: User { return _eventHost } init(eventId: String, eventData: Dictionary<String, Any>) { self._eventId = eventId if let userKey = eventData["eventHost"] as? String { let usersRef = FIRDatabase.database().reference().child("Users") let userRef = usersRef.child(userKey) print(userRef) userRef.observeSingleEvent(of: .value, with: { (snapshot) in print("USERY: \(snapshot.key)") if let userDict = snapshot.value! as? Dictionary<String, Any> { let id = snapshot.key self._eventHost = User(userId: id, userData: userDict) } }) } } } The print(userRef) resolves to
https://xxxx.firebaseio.com/Users/AFHpS3npOga4tfj10GS2HGeT9uJ3` which is a valid object in my Firebase structure. Snippet of Firebase User structure
"AFHpS3npOga4tfj10GS2HGeT9uJ3" : { "email" : "[email protected]", "firstName" : "Wilma", "lastName" : "Flintstone", "profileImageUrl" : "http://images.iimg.in/c/569f4771c45d324bda8b4660-4-501-0-1453279096/google/user-icon-png-pnglogocom.img", "provider" : "Firebase", "userId" : "AFHpS3npOga4tfj10GS2HGeT9uJ3" },