2017-03-16 84 views
0

我正在閱讀關於onDisconnect的firebase文檔,但它沒有提及我正在尋找的操作。 https://firebase.google.com/docs/reference/js/firebase.database.OnDisconnectFirebase onDisconnect如何觸發其他功能

目標:當連接斷開時,我想運行一個函數來更新與此連接數據無關的其他數據。

我的代碼如下:

let PlayerRef = database.ref("/players"); 
let MessageRef = database.ref("/messages"); 
let con=playersRef.child(0).push('test'); 
con.onDisconnect().remove(); // yes i want to remove that current connection 
// BUT I also want to update the MessageRef that is 
//using the data in the "con", how can I acheive this??? 

我將如何實現這一目標?

回答

4

您可以將一個onDisconnect()處理程序在數據庫中的任何位置,並刪除或寫入數據到該位置。

但是意識到onDisconnect()的工作方式是將寫入操作預先發送到Firebase服務器。因此,只要可以在附加onDisconnect偵聽器時在客戶端上計算該值,您就可以編寫任何值。

+0

我真的不明白這一點。我嘗試更新的數據不會附加到'.onDisconnect()'函數。基本上我有locA.onDisconnect()。wantToUpdate(locB) – WABBIT0111

+0

'onDisconnect'可以連接到任何位置,所以'locB.onDisconnect().set(...)' –

+0

這樣一般來說。 '.onDisconnect()'不知道什麼已經斷開,除了檢測到某些東西已經斷開連接? – WABBIT0111

0

根據文檔.remove接受回調參數。我相信你可以利用它。就像這樣:

con.onDisconnect().remove(() => { 
    MessageRef.update(...); 
}); 
+0

我剛剛嘗試過。但它似乎並不奏效。無論連接是否被斷開,回調函數都會被調用 – WABBIT0111

+1

您可以舉一個例子說明您是如何做到這一點的?並更新問題,以便其他用戶可以看到您嘗試添加測試的內容。 – jkris

+0

con.onDiscommect()。remove(function(){ MessageRef.set({message:「test」}); //此插入不在斷開連接 }); – WABBIT0111