본문 바로가기

기타/node js

nodejs mysql 연동하기

728x90

오늘은 nodejs에서 mysql데이터 베이스를 연동하는 방법에 대해 알아보도록 하겠습니다.

우선 npm i mysql을 통해 패키지를 다운로드해야 합니다.

그런 후 아래와 같이 코드를 작성해주세요.

mysql에 test라는 데이터 베이스가 있다는 가정하에 진행되는 예제이므로 아파치 서버를 설치하시고 그곳에 test라는 데이터 베이스를 만들어야 구동될 것입니다. 

서버를 설치하는 방법은 검색을 통해 스스로 해주시기 바랍니다.

저 같은 경우에는 bitnami를 통해 설치했습니다.

 

본격적으로 알아보도록 하죠.

아래 코드를 하나하나 뜯어보도록 하죠.

 

var mysql = require('mysql');
var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '123456',
    database: 'test'
});
connection.connect();
connection.query(`CREATE TABLE test1 (
        seq        INT NOT NULL AUTO_INCREMENT,
        mb_id     VARCHAR(20),
        mb_pw    VARCHAR(20),
        address   VARCHAR(50),
        mb_tell    VARCHAR(50),  
         PRIMARY KEY(seq)
       ) ENGINE=MYISAM CHARSET=utf8;`, function (err) {
    if (err) {
        console.log(err)
        return
    }
    console.log('success1')
    connection.query('SELECT * FROM test1', function (error, results, fields) {
        if (error) {
            console.log(error);
            return
        }
        console.log(results);
        console.log('success2')
        connection.end();
    });
})

 

우선 mysql 패키지를 가져옵니다.

데이터 베이스와 연결을 해야 합니다.

createconnection을 통해 연결할 수 있습니다.

host, user, password, database를 서버를 만들 때 넣었던 값을 넣어주시면 됩니다.

그리고 그 객체를. connection을 통해 데이터 베이스와 연결합니다.

connection.query()를 통해 mysql구문을 작동시킬 수 있습니다.

비동기 처리로, 함수의 첫 번째 인자인 mysql구문이 실행되고 콜백 함수를 실행합니다.

connection.query안에 또 다른 connection.query가 들어가는 이유이죠.

test 1이라는 테이블을 만들고 test 1을 참조해야 하는데 만약 두 query가 분리되어 있다면 병렬 처리로

테이블이 만들기 전에 참조하려고 해 에러가 발생할 수 있기 때문입니다.

 

결과는 다음과 같습니다.

 

아직 테이블에 값을 넣어주지 않아 빈 리스트가 나옵니다.

 

위와 같은 콜백 함수 구문의 단점은 처리가 복잡해질수록 콜백 함수가 많아져 코드 복잡도가 급격히 상승한다는 것입니다.

이런 문제를 해결하려면 promise를 사용하면 됩니다.

다음 시간에는 bluebird를 통해 mysql 처리를 보다 간단하게 하는 방법에 대해 알아보도록 하겠습니다.

 

728x90