[MYSQL] node와 mysql 연동

jihan kong·2022년 3월 15일
0

MySQL 

목록 보기
3/9
post-thumbnail

node-mysql

Javascript로 어떻게 mysql을 제어할 수 있을까? 그 방법은 여러가지가 있지만 nodejs를 이용한 node-mysql이 우리의 시리즈의 목적과도 부합하면서 쉽고 빠르게 제어할 수 있는 방법일 것이다. 일단 먼저, cmd를 열고 npm install --save node-mysql 을 입력해서 npm을 통해 node-mysql 모듈을 설치한다.

그 다음으로 atom 에디터를 열고, 작업 디렉토리에 database_mysql.js 파일을 생성한다.

database_mysql.js

var mysql = require('mysql');
var conn = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '*********',
  database : 'o2'
});

conn.connect();

require 문으로 mysql을 import 하고 createConnection 으로 mysql DB와 서버를 연결시킨다. host는 DB가 담긴 사이트 주소 혹은 localhost이고 user, password, database의 이름은 모두 우리가 생성했던 o2 데이터베이스의 설정값을 바탕으로 생성한다. (password도 db password로 입력하여야 하지만 지금은 보안상의 이유로 '*' 로 내용을 감추었다)

이제 서버를 실행시켜보면..

위와 같이 커서가 깜빡이고 있다면 정상적으로 서버가 동작한다는 것을 의미힌다.
이제 o2 database의 table을 조회하는 query를 날려보자.

database_mysql.js

var sql = 'SELECT * FROM topic';
conn.query(sql, function(err, rows, fields){
  if(err) {
    console.log(err);
  } else {
    console.log('rows', rows);
    console.log('fields', fields);
  }
});
conn.end();

conn 변수에 query 함수를 사용해서 sql을 전달하였는데, query는 인자값으로 sqlfunction 을 받는다. 우리는 if문을 통해 query를 전송함에 있어서 에러가 발생한다면 그것을 출력하고 아니라면 rows와 fields의 값을 콜백하도록 설계했다. 연결이 끝나면 conn.end 를 통해 서버를 셧다운하게 했다.

이를 다시 실행시켜보면,

rows 와 fields 라는 배열에 우리가 입력한 값이 담겨있는 것을 볼 수 있다.
정확히는 rows에 RowDataPacket이라고 해서 우리가 실제 입력한 id, title, description, author과 같은 column의 이름이 담겨있고, fields 배열에는 FieldPacket 으로 각 column의 속성값이 담겨 있다.

profile
학습하며 도전하는 것을 즐기는 개발자

0개의 댓글