USE management;
CREATE TABLE CUSTOMER (
id INT PRIMARY KEY AUTO_INCREMENT,
image VARCHAR(1024),
name VARCHAR(64),
birthday VARCHAR(64),
gender VARCHAR(64),
job VARCHAR(64)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
DEFAULT 이후의 설정은 한글을 위한 설정이다.
이미 테이블이 만들어졌다면 다음 명령어로 변경할수도 있다.
ALTER TABLE my_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE management;
INSERT INTO CUSTOMER VALUES (1, 'https://picsum.photos/id/1/64/64', '김주환', '990601', '남자', '대학생');
INSERT INTO CUSTOMER VALUES (2, 'https://picsum.photos/id/2/64/64', '홍길동', '961222', '남자', '의적');
INSERT INTO CUSTOMER VALUES (3, 'https://picsum.photos/id/3/64/64', '이순신', '960508', '남자', '해군');
server.js 안에 DB 정보를 하드코딩하면 안된다.
/database.json을 이그노어로 설정하고 파일을 생성한다.
안에 다음 양식의 json을 입력한다.
{
"host": "host address",
"user": "user name",
"password": "your password",
"port": "your port (default 3306)",
"database": "DB name"
}
서버 재시작 후 mysql 모듈을 설치한다.
npm install --save mysql
아래 명령어로 파일 접근 라이브러리 불러온다.
const fs = require('fs');
아래 명령어를 통해 사용자가 설정한 DB 설정 정보를 읽어오고 해당 환경설정 데이터를 파싱해서 가져온다.
const data = fs.readFileSync('./database.json');
const conf = JSON.parse(data);
아래 명령어를 통해 mysql 라이브러리를 불러와서 mysql 변수에 담는다.
connection 변수는 conf로부터 속성값을 받아서 mysql 연결한 연결 객체를 다룰 수 있도록 한다.
connection.connect()로 실제 연결을 수행한다.
const mysql = require('mysql');
const connection = mysql.createConnection({
host: conf.host,
user: conf.user,
password: conf.password,
port: conf.port,
database: conf.database
});
connection.connect()
아래 명령어를 통해 데이터를 불러온다.
실제로 가져온 데이터는 rows로 처리할 수 있게 된다.
app.get('/api/customers', (req, res) => {
connection.query(
"SELECT * FROM CUSTOMER",
(err, rows, fields) => {
res.send(rows);
}
);
});
이제 DB에 새로운 데이터를 추가해도 클라이언트에 갱신되는 것을 알 수 있다.