Nodejs와 MySQL

프최's log·2020년 10월 23일
0

study

목록 보기
31/59
post-thumbnail

MySQL을 이용하여 데이터가 영속성을 띌 수 있도록 서버를 구축할 수 있다.

Persistence(영속성) 이란, 서버가 재시작해도 저장된 data가 지워지지 않는 것을 의미하며, 대부분의 어플리케이션에서 요구되는 기능


서버를 구축하기 앞서 '스키마(Schema)' 를 디자인하면 데이터베이스를 만드는데 수월하다.

스키마란, 데이터베이스에서 자료 구조 및 자료 표현방법, 자료 간 관계를 정의한 구조이다.

스키마 디자인에는 DB Diagram 을 이용하면 코드 생성이나 시각적인 면에서 활용하기 좋다.

스키마 디자인이 끝나면 서버 내에 schema.sql 을 생성하여 MySQL에 적용할 수 있다.

// 스키마 적용
$ mysql -u root < 저장위치/schema.sql
// 비밀번호가 설정되어있다면,
$ mysql -u root -p < 저장위치/schema.sql

스키마 적용이 완료되었다면, MySQL을 실행하여 SHOW DATABASES; 를 통해 확인해보면 된다.


Server 연결하기

├── /server
│   ├── app.js       # node.js 서버 진입점
│   ├── routes.js    # node.js 라우터 분기점
│   ├── mysql.js     # mysql 연결지점 
│   ├── schema.sql   # 스키마 디자인 적용 파일 
│   └── package.json

먼저 npm을 통해 mysql npm 모듈을 설치 진행한다.

$ npm install mysql --save

이 모듈을 통해 서버가 MySQL 서버와 상호작용할 수 있게 된다.

이제 nodejs를 활용해서 mysql 를 연결해보자. 참조사이트

서버 폴더 안에 mysql.js 혹은 db 폴더를 만들어서 별도 관리를 진행해줘도 된다.

// mysql.js 혹은 db/index.js
var mysql      = require('mysql');

var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root'
  password : 설정된 비밀번호,
  database : 사용할 데이터베이스명
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();

위를 만들고 나서 node mysql.js 를 실행했을 때, 아래와 같이 결과가 나온다면 접속이 진행된 것이다.

이제 모듈로써 활용해야 하니 가장 마지막 줄에 module.exports = connection; 를 꼭 넣도록 하자.

routes 세팅

GET/POST 요청을 진행하기 위해서는 routes 에서 mysql 로 query 요청을 보내야 상호작용을 할 수 있다.

route.get('/users', (req, res) => {
  mysql.query('SELECT * from Users', (error, rows) => {
    if (error) throw error;
    console.log('User info is: ', rows);
    res.send(rows);
  });
});

Node.js(Express)와 MySQL 연동

profile
차곡차곡 쌓아가는 나의 개발 기록

2개의 댓글

comment-user-thumbnail
2021년 3월 31일

용어에 대한 정리가 함께 있어서 비전공자가 이해하는데 많은 도움이 되었습니다!
친절한 설명 감사합니다 :)

1개의 답글