본문 바로가기
개발

[NodeJS] MySQL 연동

by 마스터누누 2017. 4. 18.
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 값을 입력한다.





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


반응형

'개발' 카테고리의 다른 글

[NodeJS] Passport - middleware/strategy 설정  (0) 2017.04.18
[NodeJS] Passport 환경 구축  (0) 2017.04.18
[NodeJS] AJAX 처리  (0) 2017.04.18
[NodeJS] 템플릿  (0) 2017.04.18
[NodeJS] POST 요청 받기/응답  (6) 2017.04.18

댓글