MySQL을 이용하여 데이터가 영속성을 띌 수 있도록 서버를 구축할 수 있다.
Persistence(영속성) 이란, 서버가 재시작해도 저장된 data가 지워지지 않는 것을 의미하며, 대부분의 어플리케이션에서 요구되는 기능
서버를 구축하기 앞서 '스키마(Schema)' 를 디자인하면 데이터베이스를 만드는데 수월하다.
스키마란, 데이터베이스에서 자료 구조 및 자료 표현방법, 자료 간 관계를 정의한 구조이다.
스키마 디자인에는 DB Diagram 을 이용하면 코드 생성이나 시각적인 면에서 활용하기 좋다.
스키마 디자인이 끝나면 서버 내에 schema.sql
을 생성하여 MySQL에 적용할 수 있다.
// 스키마 적용
$ mysql -u root < 저장위치/schema.sql
// 비밀번호가 설정되어있다면,
$ mysql -u root -p < 저장위치/schema.sql
스키마 적용이 완료되었다면, MySQL을 실행하여 SHOW DATABASES;
를 통해 확인해보면 된다.
├── /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;
를 꼭 넣도록 하자.
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);
});
});
용어에 대한 정리가 함께 있어서 비전공자가 이해하는데 많은 도움이 되었습니다!
친절한 설명 감사합니다 :)