본문 바로가기
Node.js

[Node.js] nodejs(express)서버와 Mysql연동해서 사용하기

by 방방방땡 2019. 10. 17.

서버를 구축하셨다면 클라이언트에서 받은 데이터를 저장하거나 요청하는 데이터를 전달하기 위해 데이터베이스 연동은 필수인데요. 이번에는 nodejs와 mysql(mariadb)를 연동해서 사용하는 법을 알아보겠습니다.

 

1. mysql 패키지 설치

 

$ npm install -save mysql

 

2. 데이터베이스 모듈화

 

config/database.js 생성

createConnection 메소드의 인자로 전달되는 객체에 자신의 데이터베이스 정보(유저명과 패스워드 등)를 입력하여야 합니다. 

 

var mysql = require('mysql');

module.exports = function () {
  return {
    init: function () {
      return mysql.createConnection({
        host: 'localhost',
        port: '3306',
        user: 'username',
        password: 'password',
        database: 'test'
      })
    },
    
    test_open: function (con) {
      con.connect(function (err) {
        if (err) {
          console.error('mysql connection error :' + err);
        } else {
          console.info('mysql is connected successfully.');
        }
      })
    }
  }
};

 

3. 데이터베이스 연결

 

database.js파일을 불러와 init() 함수를 통해 커넥션 연결을 완료합니다. mysql is connected successfully. 메세지가 로그에 찍혔다면 정상적으로 연동이 되었다는 뜻입니다. 다음으로 클라이언트로부터 get 요청이 들어왔을때 select 문을 사용해 usere 데이터를 가져오는 부분을 작성해보았습니다. 디비에 데이터가 들어있다면 정상적으로 출력이 되는 것을 확인할 수 있을 것입니다.

 

module.exports = router;

var router = express.Router();
var mysql_dbc = require('../config/database')();
var connection = mysql_dbc.init();

mysql_dbc.test_open(connection);

router.get('/', function(req, res){
  var sql = 'SELECT * FROM user';
  connection.query(sql, params, function (error, rows, fields) {
    if (!error) {
      for (var i = 0; i < rows.length; i++) {
        console.log(rows[i]);
      }
    } else {
      console.log('query error : ' + error);
    }
  });
})

module.exports = router;

 

nodejs와 mysql을 사용할 때 쿼리문 대신 serialize를 사용해서 디비를 다룰 수도 있는데 저는 쿼리문이 더 익숙해서 이 방식으로 프로젝트를 진행 중입니다. 하지만 시간이 된다면 serialize를 사용해보는 것도 좋을 것 같습니다.

 

'Node.js' 카테고리의 다른 글

[Node.js] Nodejs & Express 설치 및 서버구축하기  (0) 2019.10.05