저번 시간에 설치했던 MySQL Workbench를 켜줍니다.
create database myblog;
use myblog;
create table if not exists category(
name varchar(255) primary key,
url varchar(255)
);
create table if not exists post(
id int primary key auto_increment,
category varchar(255),
title varchar(255),
writtentime datetime,
body text,
views int,
foreign key (category) references category(name)
);
위 쿼리를 실행해 필요한 테이블을 생성해줍니다.
서버를 연결하기 전에 DB서버 설정을 별도의 파일에서 갖고올 수 있도록 아래 명령어를 통해 dotenv모듈을 설치합니다. 이렇게 하면 github같은 저장소에 push를 할 때 config.env파일을 숨기는 방식으로 민감한 정보가 웹에 노출되는 것을 피할 수 있습니다(github에 push할 땐 추가적으로 .gitignore파일을 이용해야 합니다.).
npm install dotenv -S
그 후에 app.js 파일에서 아래 코드를 맨 위에 작성하고 root 디렉토리에 config.env파일을 생성하면 해당 파일에서 설정한 변수들을 process.env 객체를 통해 불러올 수 있습니다.
app.js
const dotenv = require('dotenv');
dotenv.config({path: './config.env'});
config.env
DB_HOST = localhost
DB_NAME = myblog
DB_PWD = password
DB_USER = root
이제 데이터베이스를 웹 서버와 연결해야하니 터미널로 돌아가서 아래와 같은 명령어를 실행해줍니다.
npm install mysql -S
그리고 mysql.js 파일 middleware 폴더 아래에 새로 만들어주고 아래 코드를 입력합니다.
const mysql = require('mysql')
module.exports = function(host, user, password, database){
let connection = mysql.createPool({
host : host,
user : user,
password : password,
database : database
});
return connection
}
그리고 app.js에서 아래 코드를 입력해주면 앞으로는 req객체의 database를 통해 항상 sql 서버에 접속할 수 있게 됩니다.
let mysqlConnection = require('./middleware/mysql')(process.env.DB_HOST, process.env.DB_USER, process.env.DB_PWD, process.env.DB_NAME);
app.use((req, res, next) => {
req.database = mysqlConnection;
next();
});
다음에는 pug엔진을 통해 실제 웹사이트를 꾸며 보겠습니다.