【发布时间】:2019-11-15 11:18:25
【问题描述】:
也许我误用了 onDisonnect(),但我查看了 firebase.blog 上的示例代码并且正在尽我所能。
当用户提交用户名时,我调用下面的代码,将用户名添加到 firebase 数据库。然后在断开连接时,我希望从数据库中删除用户名。这意味着数据库将只显示当时连接到应用程序的用户。
我这样做是为了调用数据,然后通过数组映射以显示当前登录的用户。
我曾两次尝试删除该名称,您可以在下面的 con.onDisconnect().remove(); 下的代码中看到,这两种方法都没有按我需要的方式工作。也就是说,如果我从同一台计算机再次登录,第一个用户名将替换第二个用户名!
这是我的代码
setName = e => {
e.preventDefault()
let name = this.state.name;
let connectedRef = firebase.database().ref('.info/connected');
connectedRef.on('value', function (snap) {
if (snap.val() === true) {
// Connected
let con = myConnectionsRef.push();
myConnectionsRef.set({
name
})
// On disconnect
con.onDisconnect().remove();
myConnectionsRef.orderByChild('name').equalTo(name).once('child_added', function (snapshot) {
snapshot.ref.remove();
// var nameRef = firebase.database().ref('users/'+name);
// nameRef.remove()
})
}
});
我哪里错了?有没有更好的方法来使用 onDisconnect?从 fb 论坛上的示例中,不清楚我将把该代码块放在哪里,因此我为什么要尝试这样做。
谢谢。
【问题讨论】:
标签: reactjs firebase firebase-realtime-database