2017-07-04 80 views
1

我使用Firebase开发了一个聊天。如何计算javascript中的firebase聊天消息中的未读消息

不想计算所有未读状态的消息并将其显示给我的用户列表。

这是我的数据库。

enter image description here

正如你可以在图片中看到的,我有状态: “未读”

这是我在JavaScript一样。

<script> 
    var ref = new Firebase("https://mosbeau-cd349.firebaseio.com/Users/<?php echo $ae; ?>/"); 

    ref.on("value", function(snapshot) { 
     var names=""; 
     var un=0; 
     for (x in snapshot.val()) { 
      var xRef = new Firebase("https://mosbeau-cd349.firebaseio.com/Users/<?php echo $ae; ?>/"+x+"/"); 
      var messagesRef = new Firebase("https://mosbeau-cd349.firebaseio.com/Chats/"+x+" <?php echo $ae; ?>"); 
      xRef.once("value", function(xsnapshot) { 
       var data = xsnapshot.val(); 
       var name = data["cuname"]; 
       //console.log(name); 

       messagesRef.on("value", function(ysnapshot) { 
        for (y in ysnapshot.val()) { 
         var yRef = new Firebase("https://mosbeau-cd349.firebaseio.com/Chats/"+x+" <?php echo $ae; ?>/"+y+"/"); 
         yRef.once("value", function(zsnapshot) { 
          var ydata = zsnapshot.val(); 
          var status = ydata["status"]; 
          alert(status); 
          if(status=="unread"){ 
           un++; 
          } 
         }); 
        } 
       }); 

       names += "<li style='padding:10px;border-bottom:1px solid#f2f2f2;'><a href='adminchat.php?id="+x+"&ae=<?php echo $ae; ?>&aeid=<?php echo $aeid; ?>&custo="+name+"'>"+name+" "+un+"</a></li>"; 
      }); 
     } 
     document.getElementById('results').innerHTML=names; 
    }); 


    </script> 

我无法获得未读消息的总数。

请帮帮我。

回答

1

使用query,在火力地堡很平常的事:

... 
//console.log(name); 

// NEW 
messagesRef.orderByChild("status").equalTo("unread").on("value", function(ysnapshot) { 
    var unread = ysnapshot.numChildren(); 
}); 

names += "<li style='padding:10px;border-bottom:1px solid#f2f2f2;'><a href='adminchat.php?id="+x+"&ae=<?php echo $ae; ?>&aeid=<?php echo $aeid; ?>&custo="+name+"'>"+name+" "+un+"</a></li>"; 
... 
  • 假设"https://mosbeau-cd349.firebaseio.com/Chats/"+x+" <?php echo $ae; ?>/"解析为类似:"https://mosbeau-cd349.firebaseio.com/Chats/10736 ONLINESHOP/"

因此,所有你正在做的是让这个节点,10736 ONLINESHOP ,并由其子女status的值为unread的孩子检索。

+0

嗨,我试图添加此代码,但我得到一个错误messagesRef.orderByChild不是一个功能 – Joehamir

+0

嗨请帮我解决我的问题。我仍然没有得到解决方案。对不起,即时通讯新的firebase和JavaScript。我真的需要帮助解决这个问题。谢谢。 – Joehamir