更改firebase中密钥的最佳方法是什么?

时间:2015-07-06 17:43:25

标签: javascript firebase

如果我有这样的firebase数据:

teams:{
    thunder: {
        wins: 3,
        losses: 2,
        draw: 1
    },
    warrior: {
        wins: 2,
        losses: 4
    }
}

如何将“勇士”键更改为“勇士”?我能想到的唯一方法是加载“warrior”数据,用新密钥保存,然后删除旧数据。虽然对我来说感觉有点像黑客,有没有更好的方法呢?

2 个答案:

答案 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"

使用此结构,您可以查询有关团队本身或其他查询的信息,以搜索任何团队成员或成员或有关他们的信息。