2017-12-28 27 views
0

나는 firebase 데이터베이스를 가지고 있으며 모든 사용자에게 친구가 저장됩니다 (친구 인 경우 값은 true입니다). 그러나 다른 사람이 아직 친구 요청을 수락하지 않은 경우 값은 false입니다.데이터를 해당 값에 따라 필터링하십시오.

enter image description here

나는 목록에서 모든 사용자를 넣을 수 있습니다. 그러나 내가 성취하고자하는 것은 가치 '참'을 가진 사용자들만 보여주고 값 '거짓'을 가진 사람들은 그렇지 않다는 것입니다.

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); 
    } 
} 

감사합니다. 이 같은

+0

'names.filter (name => usernames [name])'를 추가하면'name' 배열의'usernames'에있는 해당 키가'true'로 유지됩니다. – Ohad

+0

@ 오 하드 대답 해 주셔서 감사합니다. 정확히 내가 이것을 어디에 추가해야합니까? –

+0

'var names = Object.keys (...')가 작동합니다. – Ohad

답변

0

뭔가 작업을해야 다음 if 외에도

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); 
     } 
    } 
} 

,이 코드는 결과를 통해 루프 Snapshot.forEach()를 사용합니다. 동작을 변경하지는 않지만 약간 더 빠르며 관용적입니다.

+0

이 작품은. (다시) 감사합니다! –