[Server]Nodejs에 DB연동하기

1 minute read

데이터베이스

관계형 데이터베이스는 대표적으로 Oracle, Mysql, SQLLite 등의 DBMS가 있습니다.

회사에서는 보통 Java와 친숙한 Oracle을 사용하고, Javascript언어 기반인 Nodejs는 Mysql나 MariaDb 등을 데이터베이스로 사용하고 있습니다.
그 이유는 Oracle사가 자바라이센스를 가지고 있고, Javascript에 대해서는 따로 라이센스가 없어서가 가장 큰 이유가 아닐까 싶습니다.

자바는 오라클사가 라이센스를 보유하고 있지만,

자바스크립트는 넷스케이프, 모질라 재단에서 개발한 언어입니다.(위키백과)

  • Java Server -> Oracle

  • JavaScript Server -> Mysql,MariaDb, SQL Server 등

Nodejs에 DB연동하기

이번 포스팅에서는 AWS RDS로 설정된 DB를 Nodejs로 연동시키는 방법에 대해서 알아보겠습니다.
Nodejs에 데이터베이스를 연동하는건 크게 어렵지 않습니다.

AWS데이터베이스 설정은 아래 링크를 통해서 확인하시면되요!
AWS데이터베이스

Mysql 라이브러리 설치

Npm으로 Mysql을 설치합니다.

npm install –save mysql

설치가 완료되면 기본 프로젝트에 module의 폴더를 만듭니다.

    server
    ├── main.js
    ├── module  //모듈폴더를 생성
    ├── node_modules
    ├── package-lock.json
    └── package.json

module 폴더안에 db_info.js 파일을 만듭니다. db_info.js 파일을 따로 만드는 이유는 실제 데이터베이스를 운영할 때, 운영계, 개발계로 나누어서 운영하기 때문입니다.
아래 소스는 데이터베이스 정보를 세팅하는 부분입니다.
실제 운영하게되면 dev, real 로 나뉘기 때문에 파일을 만드는게 좋습니다.

module/db_info.js

module.exports = (function() {
	    return {
	        real: { // localhost
	            host: '...',  //엔드포인트입력
	            port: '3306',  //myql포트입력
	            user: '...',    //마스터유저입력
	            password: '...',  //마스터유저비밀번호입력
	            database: '...' //데이터베이스 인스턴스입력
	        }
	    }
	})();

AWS RDS를 설정할 때 넣으셨던 정보를 차례대로 넣습니다.
module폴더안에 하나의 파일을 더만듭니다. db_connect.js 파일을 만듭니다.
역할은 db_info에서 정보를 받아 db를 연결하는 역할을 합니다.

module/db_connect.js

//database 연결구조
const db = require('mysql');
const config = require('../module/db_info').dev;

module.exports.conn= function(){
  const conn = db.createConnection({
    host: config.host,
    port: config.port,
    user: config.user,
    password: config.password,
    database: config.database

  });
  conn.connect(function(err) {
    if (err) {
      console.error('에러 connect:' + err.stack);
      return;
    }
    console.log('Mysql DB Connect완료! ID : ' + conn.threadId);
  });
  return conn;
  }

위 파일 설정을 마치면 main.js에 모듈을 불러와 해당 DB connect을 set 합니다.
Nodejs를 통해서 개발하게 되면 간단하게 공부할 목적이면 DB정보를 main.js에 넣어도 되지만, 서버가 복잡해 짐에 따라 위 모듈폴더를 두어 DB정보를 나누었습니다.

main.js

const express = require('express');
const app =  express();
var cors = require('cors');

//database connect
const database = require('./module/db_connect.js');
const conn = database.conn();

app.listen(4000, function(){
  console.log('Connected Server, 4000 Port');
})

결과

아래와 같이 정상적으로 실행되는 것을 확인할 수 있습니다. Image Alt 텍스트

Tags:

Categories:

Updated: