2016-07-13 26 views
0

Ich habe Knoten 'Nachrichten', und es wird mehrere Datensätze mit Zeitstempel haben. Ich muss Gruppe von Aufzeichnungen nach Datum, Monat, Jahr, wie wie unterFirebase WEB, Gruppe Nach Kind Aufzeichnungen nach Datum, Monat, Jahr

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

Meine Einträge sehen

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

Ich möchte diese Nachricht

12 July, 2016 
    Hi 
    Yes 
    .... 

13 July, 2016 
    Hi 
    Yes 
    .... 

Mein Code anzuzeigen:

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

Antwort

0

Dort ar e ein paar Probleme in Ihrer Frage. Ich werde mich darauf konzentrieren, die Artikel nach Datum zu gruppieren.

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

Für jedes Kind, das wir erhalten, greifen wir das Datum aus dem Snapshot und wandeln sie in einem so genannten ISO String. Die ersten 10 Zeichen davon sind das Datum, z. "2016-07-13". Dies ist ein großer eindeutiger Bezeichner für das Datum, also verwenden wir das, um ein li Element im HTML zu finden/zu erstellen.

Sobald wir unser li Element gefunden oder erstellt haben, können wir unsere Nachricht sicher hinzufügen. Die letzte Zeile macht das.

Arbeitsprobe in einem jsbin: http://jsbin.com/lexaciy/edit?html,js,output