개발

[NodeJS] MySQL 연동

마스터누누 2017. 4. 18. 18:11
728x90
반응형

MySQ연동




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 값을 입력한다.





해당 이메일을 쓰고 있는 사람의 이름이 출력된다.


반응형