[Node.js] Node.js에서 MySQL 연동하기

[원본 링크]

MySQL은 이미 깔려있다고 가정한다.
없다면 이전 포스팅을 참고하길 바란다.
https://blog.naver.com/sssang97/221652064727

테스트, 혹은 사용을 위한 데이터베이스를 하나 생성한다.

테이블도 대충 만들어준다.

mysql을 사용하기 위한 노드 모듈을 설치한다.

이제 노드 코드에서 require로 땡겨쓸수 있다.

일단 먼저 데이터베이스에 접속하기 위한 사전 정보를 생성해줘야 하는데,
createConnection과 createPool라는 두가지 메서드를 사용할 수 있다.
createPool이 더 안전하지만 번거로우므로 전자를 먼저 써보겠다.

커넥션을 생성하고,

저걸로 쿼리를 날린다.

값을 넘길 부분은 ?로 처리해놓고 중간의 가변인자로 처리한다.
마지막 인자로는 쿼리 수행 후 처리될 핸들러 함수를 전달해줘야 한다.


근데 이런 에러가 나올 수도 있다. 이럴때는

이런식으로 권한부여를 해줘야한다.
가린건 패스워드다.


그럼 이제 코드대로 처리될 것이다.

이번엔 select로 저장된 데이터들을 읽어와보자.
결과물은 핸들러 함수의 두번째 인자로 받을 수 있다.

오브젝트 배열로 묶어서 던져준다.

코드

const mysql = require('mysql');

let connection = mysql.createConnection({
    host:'localhost', //접속할 데이터베이스 시스템 링크
    port:3306, //링크 포트번호. MySQL 디폴트 포트가 3306
    user:'root', //사용자명
    password:'...', //비밀번호
    database:'test_node', //사용할 데이터베이스명
});

connection.query('insert into texts(text) values(?);',
    "foo", 
    (error)=>
    {
        if(error)
           console.log("에러 발생: "+error);
    }
);

connection.query('select * from texts',
    (error, rows, fields)=>{
        if(error)
        {
            console.log("에러 발생: "+error);
            return;
        }

        console.log(rows);
    }
)

이번엔 Pool을 사용해보자.
마찬가지로 createPool 메서드에 오브젝트로 정보들을 넘기면 된다.
이렇게

이건 일반 커넥션과 다르게, 연결의 최대 한도를 정해놓고 커넥션을 발급받아 사용하는 형태를 지닌다.

getConnection이라는 메서드로 핸들러를 받아서 핸들러에서 커넥션을 인자로 받아 쓰는데,
커넥션의 한도가 정해져있기 때문에 핸들러에서 바로바로 release로 커넥션을 풀에 돌려줘야 한다.

핸둘러에서 인자로 받은 connection은 그냥 createConnection으로 생성한 커넥션처럼 사용할 수 있다,


잘 들어간 것을 볼 수 있다.


참조
https://www.inflearn.com/questions/3637
https://www.w3schools.com/nodejs/nodejs_mysql_select.asp