Querying Firebase with Swift 3.0
You need to use queryOrderedByChild
to createdAt
and than use equalTo Today
let ref = FIRDatabase.database().reference().child("thoughts").queryOrdered(byChild: "createdAt").queryEqual(toValue : "Today")
ref.observe(.value, with:{ (snapshot: FIRDataSnapshot) in
for snap in snapshot.children {
print((snap as! FIRDataSnapshot).key)
}
})
This is my solution for this JSON:
JSON:
{
"users" : {
"-KWGdcdZD8QJSLx6rSy8" : {
"name" : "dummy1",
"visibility" : true
},
"-KWGeGivZl0dH7Ca4kN3" : {
"name" : "dummy2",
"visibility" : false
},
"-KWGeIvWHBga0VQazmEH" : {
"name" : "dummy3",
"visibility" : true
}
}
}
SWIFT:
//Fetch only Childs with attribute "visibility" = true
Database.database().reference().child("users").queryOrdered(byChild: "visibility").queryEqual(toValue: true).observeSingleEvent(of: .value, with: { (snapshot) in
guard let dictionary = snapshot.value as? [String:Any] else {return}
dictionary.forEach({ (key , value) in
print("Key \(key), value \(value) ")
})
}) { (Error) in
print("Failed to fetch: ", Error)
}