Нижче мій firebase і код, я хотів би отримати всі дії, в яких є ключ John John всередині User.
let ref = FIRDatabase.database().reference().child("activities/")
ref.queryOrderedByChild("User").queryEqualToValue("John").observeSingleEventOfType(.Value,
withBlock:{
(snapshot) in
for record in snapshot.children
{
}
})
Відповіді:
0 для відповіді № 1Це не працює, оскільки у вашому запиті ви намагаєтеся виконати всі дії, що мають атрибут User == "John"
коли реальною цінністю Користувача є такий Об'єкт:
{
"John": {
"age": 21
}
}
Щоб вирішити цю проблему, слід змінити структуру даних, створивши вузол, де ви зберігаєте всіх своїх користувачів і зберігаєте users/userID/activities
лише ідентифікатор діяльності. Наприклад, це був би кращий спосіб структурувати ваші дані:
{
"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
}
}
}
}
Тоді можна використовувати Повідомте мене, якщо це допомогло;)