Tech Blog of Pinomaker

Node JS의 MySQL 모듈로 Connection Pool 방식으로 DB에 접근을 해보자.

 

POSTMAN을 이용하여 데이터가 잘 들어가는 지에 대한 확인도 진행한다.

 

Postman API Platform | Sign Up for Free

Postman is an API platform for building and using APIs. Postman simplifies each step of the API lifecycle and streamlines collaboration so you can create better APIs—faster.

www.postman.com

 

폴더 구조는 아래와 같다.

 

개발을 진행하기 위한 모듈을 아래와 같이 설치한다.

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 조회

profile

Tech Blog of Pinomaker

@pinomaker

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!