2016-07-13 9 views
0

ノード 'メッセージ'があり、タイムスタンプ付きの複数のレコードがあります。私は私のレコードがFirebase WEB、グループ日付、月、年による子レコード別

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

ように見える

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

以下のようなとして私は

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あなたの質問にいくつかの問題があります。私は日付で項目をグループ化することに焦点を当てます。私たちが受け取る各生徒用

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

関連する問題