고객 DB 테이블 구축 및 Express와 연동하기

Tin9oo·2023년 12월 9일
0

테이블 생성

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', '남자', '해군');

서버에서 DB 접근

DB 정보 gitignore로 설정

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에 새로운 데이터를 추가해도 클라이언트에 갱신되는 것을 알 수 있다.

profile
🚙 HMG SOFTEER 3rd | 💻 BE

0개의 댓글