2017-07-04 49 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