我使用firebase开发了一个聊天。
不想计算具有未读状态的所有邮件,并将其显示在我的用户列表中。
这是我的数据库。
如图所示,我有状态:"未读"
这是我在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>
我无法获得未读消息的总数。
请帮帮我。
答案 0 :(得分:1)
使用query,这是Firebase中非常常见的事情:
...
//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
。