JavaScript/Nodejs

[NodeJS] Mysql 연결하기 [Mysql createPool]

반응형

  Mysql 모듈 설치

아래 명령어를 통해 mysql 을 설치해줍니다.

yarn add mysql

 

  Mysql 모듈 사용하기

설치를 하셨다면, 새로운 js 파일을 만들어 require 시켜줍니다.

// pool.js

const mysql = require('mysql')

 

이 후 각자에 맞는 연결을 해주도록 합니다.

// pool.js

const mysql = require('mysql')

const dbConfig = {
	host: 'localhost',
    port: 3306,
    user: 'root',
    password: 'root',
    database: 'authtest'
}

 

여기서 createConnection 과 createPool 이 나오게 됩니다.

 

  Mysql Pool

Connection 과 Pool 의 차이는 처리방식의 차이입니다.

간단하게 설명드리면, Connection은 동시에 여러 쿼리문을 처리하지 못하지만, Pool은 동시에 여러 쿼리문을 병렬적으로 처리할 수 있습니다.

 

아래 이미지를 클릭하시면 더욱 자세한 설명을 보실 수 있습니다.

https://brownbears.tistory.com/289

  Mysql Pool 사용하기

이 Pool 을 모듈처럼 만들어서 사용하기 위해 모듈처럼 만들어보도록 하겠습니다.

// pool.js

const mysql = require('mysql')

const dbConfig = {
	host: 'localhost',
    port: 3306,
    user: 'root',
    password: 'root',
    database: 'authtest'
}

const pool = mysql.createPool(dbConfig);

exports.getConnectionPool = (callback) =>{
    pool.getConnection((err, conn)=>{
        if(!err) callback(conn)
    });
}

 

이제 이 모듈을 사용하도록 할건데요,

//auth.js
const user = require('../../controller/user')

router.route('/user')
    .post(user.userRegister) // 회원가입

이런 형식으로 만들어주도록 하겠습니다. 여기서 user.userRegister 는 user.js 에 있는 모듈을 가져옵니다.

//user.js

const pool = require('../lib/config/pool')

exports.userRegister = (req,res) => {
    pool.getConnectionPool((conn)=>{
    	 const sql = 'SELECT * FROM user'
        conn.query(sql , (err, doc)=>{
            if(err) console.log(err)
            res.send(doc)
        })
        conn.release()
    })
}

 

이런식으로 해주면 위에서 만들었던 모듈을 불러와 사용을 할 수 있게되고, query 가 끝나고 release 를 해주면서 pool 을 끝내줍니다.

반응형