2016-07-13 2 views
0

노드 '메시지'이 있으며 타임 스탬프가있는 여러 레코드가 있습니다. 나는이 메시지를Firebase WEB, 그룹 날짜, 월, 연도 별 하위 레코드로

12 July, 2016 
    Hi 
    Yes 
    .... 

13 July, 2016 
    Hi 
    Yes 
    .... 

내 코드를 표시하고 싶은

12 July, 2016 
13 July, 2016 
14 July, 2016 
..... 

아래 내 기록이

{ 
    "messages" : { 
    "233110" : { 
     "-KMU3Tfp7Sk8DzT0Z_lu" : { 
     ".priority" : 1468326341669, 
     "message" : "hi", 
     "timestamp" : 1468326341669 
     }, 
     "-KMU3_u-x4RAWXw78MHe" : { 
     ".priority" : 1468326371206, 
     "message" : "yes", 
     "timestamp" : 1468326371206 
     }, 
}  

처럼 같은 날짜, 월, 연도 별 기록에 의해 그룹에 필요

var temp_array = new Array(); 
var m_array = new Array(); 
chat.messageRef.child(roomId).on('child_added', function(snapshot,prevChildKey) { 
    var msg = snapshot.val(); 
    var d  = new Date(msg.timestamp); 
    var month = d.getDate() +' '+chat.monthNames[d.getMonth()] + ", " + d.getFullYear(); 
    m_array.push(msg); 
    temp_array[month] = m_array; 
});  
console.log(temp_array); 

답변

0

귀하의 질문에 몇 가지 문제. 나는 날짜별로 항목을 그룹화하는 데 초점을 맞출 것이다. 우리가받을 각 아동에 대한

ref.on('child_added', function(snapshot) { 
    var msg = snapshot.val(); 
    var date = new Date(msg.timestamp); 
    var id = 'date_'+ date.toISOString().substring(0,10); // e.g. 'day_2016-07-13' 
    // get or create the li for this date from the DOM 
    var li = document.getElementById(id); 
    if (!li) { 
    li = document.createElement('li'); 
    li.id = id; 
    li.innerHTML = '<b>' + date.toDateString() + '</b><br>'; 
    ul.appendChild(li); 
    } 
    li.innerHTML = li.innerHTML + msg.message + '<br>'; 
}); 

, 우리는 스냅 샷에서 날짜를 잡아와 ISO String 소위로 변환합니다. 처음 10 자는 날짜입니다 (예 : '2016-07-13'. 이것은 날짜에 대한 고유 한 고유 식별자이므로이를 사용하여 HTML에 li 요소를 찾고 만들 수 있습니다.

li 요소를 찾거나 만든 후에는 안전하게 메시지를 추가 할 수 있습니다. 마지막 줄이 그렇습니다.

jsbin의 작업 샘플 : http://jsbin.com/lexaciy/edit?html,js,output