티스토리 뷰

반응형

 

안녕하세요.

 

이번에는 node.js와 mysql을 연결하여 DB 데이터를 select 해오는 코드를 작성해보겠습니다.

 


 

1. server.js 파일 생성 및 모듈 require

우선 server.js 파일을 생성한 뒤 http와 mysql 모듈을 require 해줍니다.

 

const http = require('http');
const mysql = require('mysql');

 

mysql 모듈은 npm을 이용해 별도로 install을 해줘야 하며, http 모듈은 내장되어있기 때문에 install 없이 require로 바로 이용할 수 있습니다.

 

 

 

2. DB Connection 생성

 

다음은 DB Connection을 생성하겠습니다.

 

var conn = mysql.createConnection({
    host:'localhost',
    user:'root',
    password:'password',
    database:'nodejsdb'
});

 

 

host : 연결하려고 하는 데이터베이스의 호스트 이름을 입력합니다.

기본값은 localhost로 제가 지금 접속하려는 DB 역시 local에 있으므로 작성하지 않아도 무관합니다.

 

user : 접근할 수 있는 사용자 이름을 입력합니다.

local에 mysql을 설치 후 별도의 설정을 하지 않았다면 기본 계정 명이 root로 설정됩니다.

 

password : 설정한 비밀번호를 입력합니다.

 

database : 접속하고자 하는 데이터베이스 이름을 입력합니다.

 

현재 DB 연결은 이 정도 세팅으로 가능하며, 추가적인 연결 옵션은 아래 링크에서 자세히 확인하실 수 있습니다.

 

https://github.com/mysqljs/mysql

 

mysqljs/mysql

A pure node.js JavaScript Client implementing the MySQL protocol. - mysqljs/mysql

github.com

 

 

3. server생성 및 DB select 코드 작성

http.createServer( (req, res) => {

    conn.query('select * from users ', (err, results, fields) => {
        if(err) throw err;
        console.log(results);
        res.end();
    });

}).listen(8001, () => {
    console.log('8001 : server start!');
});

 

users 테이블의 모든 데이터를 조회하여 console에 출력하는 코드를 작성했습니다.

 

그다음 localhost:8001로 접근하니 아래와 같은 내용이 출력되는 것을 확인할 수 있습니다.

 

[ RowDataPacket 
	{ 
              id: 'user1', 
              name: 'username1', 
              age: 10, 
              ins_dt: 2020-01-18T08:24:40.000Z
	} 
]

 

 

4. DB Connection 내용 분리

DB 연결 설정을 별도로 관리하는 config.js 파일을 생성하고, 이 파일을 server.js에서 require 하여 동일한 동작을 수행하도록 하겠습니다.

 

config.js 파일은 server.js 파일과 동일한 폴더에 생성하여 다음과 같이 작성하도록 하겠습니다.

 

config.js

const mysql = require('mysql');

module.exports = {
    getConnection : mysql.createConnection({
        host:'localhost',
        user:'root',
        password:'asdf112!',
        database:'nodejsdb'
    })
}

 

 

다음은 server.js에서 새로 생성한 config.js 파일을 require하는 내용을 작성하도록 합니다.

 

mysql을 require하는 내용은 이미 config.js에 작성되어있기 때문에 해당 구문을 지우고 아래와 같이 작성하겠습니다.

 

const http = require('http');
//const mysql = require('mysql');	//구문 제거
const config = require('./config');	//config.js파일 require

var conn = config.getConnection;

 

Connection 생성하는 부분을 config.js 파일에 작성한 getConnection으로 수정한 뒤 테스트를 진행하면 정상적으로 DB 연결이 되는 것을 확인하실 수 있습니다.

 


최근 Node.js를 이용해 Restful api를 구현하거나 Electron을 이용해 업무 효율을 소소하게 올려주는 툴을 개발하며 재미를 보고 있습니다. 

 

Restful api와 Electron 관련 내용 역시 추후에 정리하여 업로드 하겠습니다.

 

 

읽어주셔서 감사합니다.

 

 

반응형