nodejs mysql join 데이터를 간편하게 json으로 정제하기

array.forEach 함수의 활용

forEach()는 오름차순으로 배열에 있는 각 요소에 대해 한 번씩 callback을 실행한다. 삭제 또는 비초기화된 인덱스 속성에 대해서는 호출되지 않는다.

callback은 다음 세 인수와 함께 호줄된다. 요소 값, 요소 인덱스, 순회될 배열

받아온 rows를 forEach 함수를 사용하여 정체

정제하는 함수

function(err,rows){
  var result = [];
  var indexObject = {};
  if(err){
    console.log(err)
  }else{
    rows.forEach(function(row){

        <!-- 해당 행의 id가 indexObject의 키값에 없을때 실행 -->
        if(!(row.id in index)){
          index[row.id]={
            id: row.id,
            name: row.name
          };

          <!-- 반환값에 추가 -->
          result.push(index[row.id]);
        }
        해당 행이 인덱스에 있건 없건 간에 해당 인덱스의 내역을 체워줌
        index[row.id].histories.push({
            historyId:row.historyId,
            historyName:row.historyName
        });
    })
    console.log(result);
  }
}