2017-03-16 79 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