根据数据过滤数据

时间:2017-12-28 13:29:13

标签: javascript firebase firebase-realtime-database

我有一个firebase数据库,并且在他们的所有用户中都存储了他们的朋友(如果他们是朋友则值为true)。但如果其他人尚未接受好友请求,则该值为false。

enter image description here

我可以将所有这些用户放在一个列表中。但我想要实现的是,只显示值为'true'的用户和值为'false'的用户。

var ref = firebase.database().ref("friends").child(userUID);
ref.on('value', gotFriends);

function gotFriends(data) {
    var usernames = data.val();
    var names = Object.keys(usernames);

    for (var i = 0; i < names.length; i++) {
        var uname = names[i];
        var ul = document.getElementById("friendsList");
        var li = document.createElement('li');
        li.appendChild(document.createTextNode(uname));
        ul.appendChild(li);
    }
}

提前谢谢!

1 个答案:

答案 0 :(得分:0)

这样的事情应该有效:

function gotFriends(snapshot) {
    snapshot.forEach(function(friend) {
      var uname = friend.key;
      if (friend.val() === true) {
        var ul = document.getElementById("friendsList");
        var li = document.createElement('li');
        li.appendChild(document.createTextNode(uname));
        ul.appendChild(li);
      }
    }
}

除了if之外,此代码还使用Snapshot.forEach()来循环结果。它不会改变行为,但会稍微快一点,也会更加惯用。