/ / swift firebase pobiera wszystkie obiekty, które dziecko obiektu ma ten sam klucz - swift, firebase, firebase-database

szybka baza ogniowa pobiera cały obiekt, który dziecko obiektu ma ten sam klucz - szybki, baza ogniowa, baza danych bazy ogniowej

Poniżej znajduje się moja baza firebase i kod, chciałbym odzyskać wszystkie działania, które mają klucz użytkownika John w User. ss

let ref = FIRDatabase.database().reference().child("activities/")
ref.queryOrderedByChild("User").queryEqualToValue("John").observeSingleEventOfType(.Value,
withBlock:{
(snapshot) in

for record in snapshot.children
{

}
})

Odpowiedzi:

0 dla odpowiedzi № 1

To nie działa, ponieważ w zapytaniu próbujesz wziąć wszystkie działania mające atrybut User == "John" gdy prawdziwą wartością użytkownika jest obiekt taki:

{
"John": {
"age": 21
}
}

Aby rozwiązać ten problem, należy zmienić strukturę danych, tworząc węzeł, w którym zapisuje się wszystkich użytkowników i pozostaje w nim users/userID/activities tylko identyfikator działań. Na przykład byłby to lepszy sposób na uporządkowanie danych:

{
"activities": {
"cycling": {
"users": {
"user1": true,
"user2": true
}
},
"running": {
"users": {
"user1": true
}
}
},
"users": {
"user1": {
"name": "John",
"age": 21,
"activities": {
"cycling": true,
"running": true,
}
},
"user2": {
"name": "Tim",
"age": 20,
"activities": {
"cycling": true
}
}
}
}

Następnie możesz użyć Daj mi znać, czy to pomogło;)