Node JS의 MySQL 모듈로 Connection Pool 방식으로 DB에 접근을 해보자.
POSTMAN을 이용하여 데이터가 잘 들어가는 지에 대한 확인도 진행한다.
폴더 구조는 아래와 같다.
개발을 진행하기 위한 모듈을 아래와 같이 설치한다.
npm install express mysql body-parser
config 폴더 안에 database.js파일을 생성하고, DB 연결을 위한 파일을 생성하고 모듈화한다.
/* database.js */
//Module Require
const mysql = require("mysql"),
//DB 정보 선언
dbInfo = {
host: "", //DB 주소
port: "", //DB Port
user: "", //DB 계정 ID
password: "", //DB 계정 PW
database: "", //DB 내 사용 database
},
//pool에 DB 정보를 담아 연결한 Pool 저장
pool = mysql.createPool(dbInfo)
//모듈화
module.exports = (callback) => {
pool.getConnection((err, conn) => {
if (!err) {
callback(conn)
}
})
}
저의 임시 DB 정보 입니다.
tbl_user | ||
이름 | 데이터형 | 비고 |
id | varchar(30) | primary key |
pw | varchar(100) | |
name | varchar(50) |
Index.js
/* index.js */
//Moduel Require (1)
const express = require("express"),
app = express(),
pool = require("./config/database"),
bodyParser = require('body-parser')
//Middleware Set (2)
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended : true}))
/* POST : New User (3) */
app.post("/", (req,res) => {
//Request Param 추출
const param = [req.body.id, req.body.pw, req.body.name]
//pool 실행
pool((sql) => {
//sql를 매개 변수 설정 시, sql.query로 sql Query 작성
//데이터를 넣을 곳에 ?를 넣어 뒤의 매개 변수 param가 ?에 들어감
sql.query("insert into tbl_user value(?,?,?)", param, (err, doc) => {
//err가 있으면 err를 출력하고, 없으면 true를 보내줌
err ? console.log(err) : res.send({result : true})
})
//DB 연결 해제
sql.release()
})
})
/* Get : Get Users (4) */
app.get("/", (req,res) => {
pool((sql) => {
//가져온 DB 정보가 row에 배열 형식으로 담김
sql.query("select * from tbl_user", (err, row) => {
//err가 없으면 결과를 보내줌
err ? console.log(err) : res.send({result : row})
})
//DB 연결 해제
sql.release()
})
})
/* SERVER ON (5)*/
const port = 8080
app.listen(port, () => console.log(`SERVER ON PORT : ${port}`))
(1)
express와 mysql, body-parser를 가져오고, config 폴더 내에 있는 database를 가져와 pool로 저장한다.
(2)
클라이언트로부터 데이터를 받기 위한 설정
(3)
클라이언트에서 보내준 데이터를 추출하여 param에 저장
pool()은 우리가 미리 설정해둔 DB 연결 기능이다.
sql.query를 이용하면 SQL Query를 작성 가능하고, 쿼리문 내에 데이터를 넣고 싶을 땐 ?를 넣어주면 그 뒤에 오는 매개 변수가 자리에 들어간다.
sql.release()가 정말 중요 합니다. 이거 안 작성하면 서버가 과부하 걸려서 느려집니다.
(4)
SQL Query문의 결과가 [{}, {}, {}] 이런 형식으로 데이터가 넘어온다.
Query문에 에러가 없으면 클라이언트에 데이터를 보내준다.
(5)
포트 번호 설정 및 서버 키기
POSTMAN으로 유저를 생성 후, 조회를 해보도록 하자.
(1) User 생성
(2) User 조회
'B.E > Node JS' 카테고리의 다른 글
[Node JS] Node.js를 Typescript 프로젝트로 셋팅하기. (0) | 2022.09.29 |
---|---|
[Node JS] Body-parser 사용하기 (0) | 2022.08.21 |
[Node JS] 1. API Server 구축하기 - express (0) | 2022.05.27 |
[Node JS] http 모듈 (0) | 2022.05.05 |
[Node JS] 개발 환경 - Prettier, Eslint (0) | 2022.04.30 |