如何在推送时为Firebase的每个条目添加uniqueId?现在我的代码看起来像:
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并获取对this.games的数据库引用:
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的列表?
答案 0 :(得分:1)
有几种方法可以做到这一点:
获取push-id并将其存储在另一个节点中:
有一种方法可以在AngularFire push方法中获取当前的push-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来更改按键:
this.af.database.object("games/"+this.randomId).set({
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)]
})
其中af包含注入的AngularFire模块
constructor(public af : AngularFire) { }
即使这种方法运行正常,它还为您提供了创建唯一ID的另一项任务,即firebase可以从第一种方法为您执行的任务。
此外,如上面的评论所述,您可以使用 random_id 子节点查询列表。