문제 :
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