动态列表firebase的实时监听器 - Javascript

时间:2017-08-10 11:35:57

标签: javascript firebase firebase-realtime-database

正在使用来自firebase DB的用户填充动态用户列表。但是当为任何用户更改任何值时,它不会反映在客户端,因为没有监听器。

//Loop for All Users
var anotherUserId = snapshot.key;
var ref = firebase.database().ref("users/"+anotherUserID);
ref.on('value', function(snapshot) {
   var obj = snapshot.val();
   li += '    <div class="contacts-container '+obj.status+'">';
   li += '        <h3>'+obj.fname+' '+obj.lname+'</h3>';
 });
//Loop Ends 

如果一个用户的状态发生了变化,则不会反映在客户端直到我刷新页面

这就是我想要制作的enter image description here

因此,如果用户在数据库中的状态发生变化,则应将 DIV 中的类更改为切换在线信号。 (灰色或绿色)

基本上实时变量不起作用,但刷新它可以工作。

1 个答案:

答案 0 :(得分:1)

您应该能够使用child_changed事件收听对用户数据库的更改。然后,您可以向div添加一个id,以便您可以选择更改并更新该类的ID。 有这样的效果:

var ref = firebase.database().ref("users");

ref.on('child_changed', function(snapshot){
 var changedUser = snapshot.val();
 document.getElementById(changedUser.id).classList.toggle('active');
}