0

如何在推送過程中爲Firebase的每個條目添加uniqueId?現在我的代碼如下所示:向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,並搶得一個數據庫參考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'); 
} 

如何推到DB和,而不是得到一個列表看起來是這個隨機生成的ID的:

enter image description here

我得到故意標識的,我有知識,能在客戶端代碼中選擇的列表?

+0

你是什麼意思「有知識」?在推送之前或之後有沒有特別想要處理的ID?無論如何,推送ID並非完全隨機,它們的初始組件是時間戳:https://gist.github.com/mikelehen/3596a30bd69384624c11 – cartant

+0

o真的嗎?是的措辭有點混亂,我想給他們Id像:331,123或554,而不是:KbaZqVQBp580Zzt4Uty和該列表中的其他人 –

+0

您可以使用['set'](https:// firebase .google.com/docs/reference/js/firebase.database.Reference#set)或['update'](https://firebase.google.com/docs/reference/js/firebase.database.Reference#update)用任何你喜歡的ID作爲鑰匙,但你的責任在於確保鑰匙是唯一的。通常,出於這個原因鼓勵使用推送。 – cartant

回答

1

有幾種方法可以做到這一點:

獲得推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方法,而不是推的更改推動關鍵:

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子節點來查詢您的列表。