[NodeJS] MySQL 연동
MySQL 연동
NodeJS가 서버(미들웨어)로써 큰 장점을 가지는것이 데이터 베이스와의 연동이다
가장 범용적으로 사용되는 데이터베이스인 MySQL과 연동해보겠다.
1 2 3 4 5 | use jsman; show tables; insert into `user` values ('ma@naver.com', 'mimi', 12); select * from user; | cs |
우선 jsman 데이터베이스와 user 테이블을 생성한다.
그 후 user테이블에 위와 같은 데이터를 삽입해 준다.
완료가 되면 위와 같은 모습의 테이블이 생성된다.
node에서 mysql을 사용하기 위해서는 mysql 모듈이 필요하다
따라서 npm으로 mysql 모듈을 설치한다.
1 2 3 4 5 6 7 8 9 | var mysql = require('mysql'); var connection = mysql.createConnection({ host: 'localhost', port:3306, user:'root', password:'********', database:'jsman' }) connection.connect(); | cs |
mysql 모듈을 로드하여 mysql 변수에 넣는다.
mysql 내부에 createConnection 메소드를 사용하여 데이터베이스와 연결한다
인자는 객체로써, 호스트나 포트, 비밀번호 등이 입력된다
connection 변수를 실행하면 연결이 완료된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | app.post('/ajax_send_email', function(req, res){ var email = req.body.email; var responseData = {}; var query = connection.query('select name from user where email="'+ email +'"', function(err,rows){ if(err) throw err; if(rows[0]){ console.log(rows); responseData.result = "ok"; responseData.name = rows[0].name; }else{ responseData.result = "none"; responseData.name = ""; } res.json(responseData) }); }); | cs |
기존의 /ajax_send_email 코드를 약간 바꾸어 준다.
요청 값으로 들어온 email을 저장하여 쿼리문을 만들어준다.
쿼리의 전송은 connection.query 메소드를 사용하면
데이터베이스로 바로 쿼리를 전송 할 수 있다.
connection.query의 콜백함수의 인자는 에러와 결과값이 들어간다.
만약 에러가 일어나면 예외처리를 해준다.
예외처리이후 결과값이 일을때와 없을때 2가지로 나누어 데이터를 처리해준 후
객체를 만들어 JSON 양식으로 이벤트가 호출된 곳에 응답한다.
1 2 3 4 5 | oReq.addEventListener('load', function(){ var result = JSON.parse(oReq.responseText); document.querySelector('.result').innerHTML = result.name; }) | cs |
이전에 만들었던 AJAX 내부의 함수도 email 값이 아닌 name 값을 넣어주도록 한다.
결과값은 다음과 같다.
text에 데이터베이스에 저장되어있는 email 값을 입력한다.
해당 이메일을 쓰고 있는 사람의 이름이 출력된다.