2017-02-16 4 views
0

Предположим, у меня есть следующие данные в базе данных Firebase. Данные необходимы, чтобы быстро увидеть 2 игроков, находящихся в конкретной игре.Как обновить ребенка Firebase без «знания» родителей?

Теперь я хотел бы уточнить имя John Doe (user-ID = UID-1) одним запросом. В идеале есть способ сделать что-то подобное. Очевидно, что это псевдо-код ... :-)

Firebase.ref('/game-players/*/UID-1').update("John with a different Doe")

"game-players" : { 
    "game-1" : { 
    "UID-1" : "John Doe", 
    "UID-2" : "Donald Trump" 
    }, 
    "game-2" : { 
    "UID-1" : "John Doe", 
    "UID-3" : "Barrack Obama" 
    } 
} 

Это может быть решено с помощью первой проверки всех игр игрок участвует в (как имеются данные слишком задница другой ветви дерево), но мне не нравится идея генерировать множество разных запросов на основе этих данных.

Любые мысли, которые могут привести меня в правильном направлении?

ответ

0

Необходимо изменить структуру данных.

players: 
|--uidxx 
|---- name 
|---- surname 
|---- ... 
|--uidx2 
|---- name 
|---- surname 
|---- ... 

game-players : 
|-- game-1 : 
|---- uidxx : true, 
|---- uidx2 : true, 

В players узле вы кладете все игроки с данными (например, название).
В узле gameplayers вы используете только uid игроков, а не данные.
Таким образом, вам нужно только обновить данные в узле игроков без запроса всех игр.

+0

Хм ... но разве это не противоречит денормализации и «структура данных следует за вашими применениями»? Я имею в виду: когда я хочу распечатать список со всеми именами пользователей для каждой игры, теперь мне нужно выполнить 2 запроса ... – Jake84

+0

Это сглаживание данных: https://firebase.google.com/docs/database/Android/структура-данные # flatten_data_structures –

Смежные вопросы