2017-02-16 27 views
0

假设我在Firebase数据库中有以下数据。需要数据才能快速查看特定游戏中的2名玩家。如何在不知道父母的情况下更新Firebase小孩?

现在我想用一个查询更新John Doe(用户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 /机器人/结构数据#flatten_data_structures –

相关问题