본문 바로가기

dev/nodejs

node js - mariaDB 연동

1. mysql2 설치

 

npm install mysql2

 

2. DB환경 파일 만들기

(1) createConnection() : 요청시마다 커넥션을 맺고 끊고 하는 단일 연결방식으로 매번 연결, 해제에 부담이 있다.

 

// dbconfig.js
const mysql = require('mysql2');

var db = {
  host : 'localhost',
  user : 'root',
  password : '0729',
  database : 'test',
  port : 3306
};

// export
module.exports = {
  // 커넥션 생성
  init: function () {
    return mysql.createConnection(db);
  },
  
  // 접속
  connect: function(conn) {
    conn.connect(function(err) {
      if(err) console.error('DB 연결 에러 : ' + err);
      else console.log('DB 연결 성공');
    });
  }
};

 

(2) createPool() : DB 커넥션 풀에 몇개의 커넥션을 먼저 만들어 놓고 요청 시에 그 중 하나를 할당받고 다시 돌려받는다. 단일 연결 방식보다 효율적이지만 커넥션의 개수에 따라 메모리에 부하가 갈 수 있다.

 

const mysql = require('mysql2');

var db = {
  host : 'localhost',
  user : 'root',
  password : '0729',
  database : 'test',
  port : 3306,
  connectionLimit: 10 // 커넥션 최대 개수
};

// 풀 생성
const pool = mysql.createPool(db);

module.exports = {
  // 연결
  connect: function getConnection(callback) {
    pool.getConnection(function (err, conn) {
      if(!err) {
        callback(conn);
      }
    });
  }
};

 

 

3. 모듈 불러와서 사용하기

 

// app.js
const express = require('express') // express 모듈
const app = express()
const port = 3000 // 포트

const dbconfig = require('./dbconfig.js');
const conn = dbconfig.init();

// 단일 연결 방식일 경우
app.get('/test', (req, res) => {
  dbconfig.connect(conn);
  conn.query("SELECT * FROM test", (err, result, fields) => {
    if (err) {
      console.log(err);
    }
    console.log(result);
  });
  conn.end();
})

// 풀 방식일 경우
app.get('/test', (req, res) => {
  dbconfig.connect((conn) => {
    conn.query("SELECT * FROM test", (err, result, fields) => {
      if (err) {
        console.log(err);
      }
      console.log(result);
    });
    conn.release();
  });
})

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})

 

'dev > nodejs' 카테고리의 다른 글

nodejs - env파일  (0) 2023.07.22
node js - typescript 설정  (0) 2023.07.20
node js - 요청, 응답  (0) 2023.07.10
node js - route  (0) 2023.07.10
express 설치  (0) 2023.03.22