본문 바로가기

NodeJS

node.js에서 json 데이터가 안읽힐 때, dataJson.forEach is not a function 에러

문제 : 

index.js에서 fs 모듈을 이용해서 json파일을 읽어서 그 데이터를 가지고 index.pug로 렌더링 했습니다.

router.get('/', function(req, res, next) {
  fs.readFile('./public/js/coffee.json', 'utf8', (err, dataJson) => {

    res.render('index', { title: 'Coffee Guide', dataJson } );
  });
});

index.pug에서는 index.js에서 넘겨준 dataJson을 forEach로 꺼내어서 li 태그를 생성하려고 했습니다. 그러나 에러발생...

// pug
dataJson.forEach((item) => {
  li.nav-item
   button(value=`${item.name}` onclick='whatcoffee(value)') #{item.name}
}); 

에러 발생 : 

dataJson.forEach is not a function !!!!

 

해결 : 

json 데이터는.... json string 객체인가봄.. 객체..객체.... 아무튼, 자바스크립트 오브젝트로 변환시켜주는 JSON.parse로 해결되었습니다. 

(책 찾아봄, nodejs 200제)

index.js를 아래와 같이 수정했습니다.

router.get('/', function(req, res, next) {
  fs.readFile('./public/js/coffee.json', 'utf8', (err, data) => {
    const dataJson = JSON.parse(data.toString());
    res.render('index', { title: 'Coffee Guide', dataJson } );
  });
});

 

728x90
300x250