如果我有这样的firebase数据:
teams:{
thunder: {
wins: 3,
losses: 2,
draw: 1
},
warrior: {
wins: 2,
losses: 4
}
}
如何将“勇士”键更改为“勇士”?我能想到的唯一方法是加载“warrior”数据,用新密钥保存,然后删除旧数据。虽然对我来说感觉有点像黑客,有没有更好的方法呢?
答案 0 :(得分:1)
使用数组代替并将团队推送到此数组。然后你的结构如下:
teams: [
{
name: "thunder",
wins: 3,
draws: 2,
loss: 1
}
]
然后您可以直接更新名称密钥,而无需先下载数据以进行更新。
答案 1 :(得分:1)
创建一个新节点并吹灭旧节点是正确的。但是,前进不同的结构将完全避免这个问题。
任何类型的数据库编程的底线(对我们而言):永远不要将密钥直接绑定到数据。总是使用某种随机的'或其他引用数据的关键结构。
Firebase在childByAutoId中提供了一个完美的工具,可以创建一个随机的'子节点名称密钥。
Chrillewoodz答案是答案......并增加一些额外的清晰度
teams
randomKey_0:
team_name: "thunder"
wins: 3
draws: 2
loss: 1
randomKey_1:
team_name: "warrior"
wins: 3
draws: 2
loss: 1
randomKey_2:
team_name: "super dudettes"
wins: 100
draws: 0
loss: 0
randomKey_x是firebase生成的childByAutoId节点名。
使用此结构,您可以在不改变结构的情况下即时更改团队名称,获胜等。而且因为您现在有一个引用,您可以在其他节点中使用它来引用该团队。例如,您可以使用单独的节点来保留有关团队成员的信息
team_members:
randomMemberKey_0
team_member_name: "Scott"
height: "7.5"
belongs_to_team: "randomKey_0"
randomMemberKey_1
team_member_name: "Billy"
height: "6.5"
belongs_to_team: "randomKey_0"
randomMemberKey_2
team_member_name: "Frank"
height: "5.0"
belongs_to_team: "randomKey_1"
使用此结构,您可以查询有关团队本身或其他查询的信息,以搜索任何团队成员或成员或有关他们的信息。