如何在javascript

时间:2017-07-04 10:17:05

标签: javascript firebase firebase-realtime-database

我使用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 个答案:

答案 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