2016-07-13 3 views
0

У меня есть узел 'сообщений', и он будет иметь несколько записей с меткой времени. Мне нужно группе записей по дате, месяц, год, как, как показано нижеFirebase WEB, Group By child records by Date, Month, Year

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 
     }, 
}  

Я хотел бы, чтобы отобразить Эти сообщения

12 July, 2016 
    Hi 
    Yes 
    .... 

13 July, 2016 
    Hi 
    Yes 
    .... 

Мой код:

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

Существует ar e несколько проблем в вашем вопросе. Я сосредоточусь на группировке элементов по дате.

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'. Это отличный уникальный идентификатор даты, поэтому мы используем его для поиска/создания элемента li в HTML.

Как только мы обнаружили или создали наш элемент li, мы можем смело добавить к нему наше сообщение. Последняя строка делает это.

Рабочий образец в jsbin: http://jsbin.com/lexaciy/edit?html,js,output