Javascript 将唯一Id添加到Firebase

Javascript 将唯一Id添加到Firebase,javascript,firebase,ionic-framework,firebase-realtime-database,angularfire2,Javascript,Firebase,Ionic Framework,Firebase Realtime Database,Angularfire2,如何在推送时为Firebase的每个条目添加唯一ID?现在,我的代码如下所示: this.games.push({ game_name: data.gameName, number_of_players: data.number_of_players, random_id: this.randomId,

如何在推送时为Firebase的每个条目添加唯一ID?现在,我的代码如下所示:

      this.games.push({
                        game_name: data.gameName,
                        number_of_players: data.number_of_players,
                        random_id: this.randomId,
                        admin: data.admin,
                        first_name: data.your_name,
                        player_array: [this.combinePlayerName(this.firstName, this.admin)] 
                     })
我正在使用AngularFire2并获取对此的数据库引用。游戏:

constructor(public navCtrl: NavController, public alertCtrl: AlertController, af: AngularFire) {
    this.games = af.database.list('/games');
    this.ids = af.database.list('/games/random_id');
}
我如何推送到数据库,而不是得到一个带有随机生成Id的列表:


我得到了一个我知道的、可以在客户端代码中选择的意向Id列表?

有几种方法可以做到这一点:

获取推送id并将其存储在另一个节点中:

在AngularFire推送方法中有一种获取当前推送id的方法。因此,您可以将随机生成的ID更改为您知道的ID

this.games.push({
   game_name: data.gameName,
   number_of_players: data.number_of_players,
   random_id: this.randomId,
   admin: data.admin,
   first_name: data.your_name,
   player_array: [this.combinePlayerName(this.firstName, this.admin)] 
}).then((game) => {
   this.ids.push(game.key);
})
除此之外,您还可以使用set方法而不是push来更改push键:

其中,af包含喷射角射模块

 constructor(public af : AngularFire) { }
尽管此方法工作正常,但它为您提供了另一项创建唯一ID的任务,firebase可以从第一种方法开始为您完成这项任务


此外,如上面的注释所述,您可以使用random_id子节点查询列表

你所说的有知识是什么意思?在推送之前或之后,您是否特别希望对ID执行某些操作?无论如何,推送ID不是完全随机的,它们的初始组件是一个时间戳:真的吗?是的,这里的措辞有点混乱,我想给他们Id,比如:331、123或554,而不是:KbaZqVQBp580Zzt4Uty和该列表中的其他。你可以使用或使用任何你喜欢的Id作为密钥添加它们,但是你有责任确保密钥是唯一的。通常,出于这个原因,鼓励使用推送。我可以使用推送,但是如果不使用KbaZqVQBp580Zzt4Uty,我如何查询游戏列表中的内容?您可以使用任意子值进行查询:游戏名称、名字等。这是您的意思吗?
 constructor(public af : AngularFire) { }