데이터베이스에 있는 board 테이블의 조회해서 pug 문법으로 뿌리는 예제(?)입니다. 혼자 작업하다가 수도없이 만난 에러를 물리치고 어쨰꺼나 정상 작동하니까 기뻐서 블로그에 정리해둡니다. 지금 이 글을 쓰고 있는 사람!! 나중에 까먹지 마시라~~!
db_con.js
데이터베이스 연결정보가 있는 파일입니다. module.exports로 다른 페이지에서 불러올 수 있도록 했습니다.
// mysql 모듈 사용
const mysql = require('mysql');
// 연결할 DB 정보입력
const connection = mysql.createConnection({
host: '내도메인.com',
user: '아이디',
password: '비밀번호',
database: '데이터베이스이름',
port: '3306',
dateStrings:'date' // 날짜 가져오는형식 떄문에 ex)2020-11-01
});
module.exports = connection;
routes/board.js
db_con 파일을 불러들어와서 sql문을 만들고 pug로 렌더링 될 때, 'results'로 통으로 넘겨버리기.
처음에는 렌더링 될때, forEach문을 사용했는데, 에러가 났었습니다. 그러니까.. 한번만 되는건데 forEach로 여러번 하려니까 안된다는 그런 에러내용이었어요. 그래서 forEach는 pug view파일 쪽에서 해야되는 것으로 수정했습니다.
const db_con = require('./db_con');
const express = require('express');
const router = express.Router();
router.get('/', function(req, res, next) {
const sql = 'select title, contents, date from board order by date desc';
db_con.query(sql, (error, results, fields) => {
if (error) throw error;
res.render('blog', { title: 'Blog', results});
});
});
module.exports = router;
view/board.pug
forEach문으로 꺼내서 반복하기. pug에서 변수(?) 받아온 인자를 쓸 때, 샵(#)을 붙여주고 중괄호 { }로 감싸줘야 합니다. 그리고 javascript를 넣어줄 때는 마이너스기호 ( - )를 앞에다가 써줍니다. forEach문이 닫을때도 ( - )써줘서 가독성 있게 했습니다. 마지막 줄의 마이너스 기호는 사실 안써줘도 됩니다.
h1.redd #{title} TEST 중입니다.
- results.forEach((item, i) => {
section
h3 #{item.title}
p= item.contents
- });
728x90
300x250