본문 바로가기
node.js 교과서

[node.js 교과서 | 7장] MySQL(3) : Sequelize 사용하기

by 솨앙 2024. 9. 29.
반응형

본 글의 내용은 node.js 교과서(조현영) 을 읽고 공부한 내용입니다.

1.  Sequelize 설치하기

- 시퀄라이즈란 자바 스크립트 객체와 데이터베이스의 릴레이션을 매핑해주는 도구입니다.

- 즉 자바스크립트의 구문을 알아서 SQL로 바꿔주기 위해 사용하니다.

-> SQL문을 몰라도 자바스크립트만으로 mySQL을 어느정도 다룰 수 있게 됩니다.

 

(1) 새 프로젝트 생성!

새로운 폴도 'learn-sequelize'를 만들어주고, 이전에 한 것과 같이 package.json을 만들어줍니다.

2024.09.29 - [node.js 교과서] - [node.js 교과서 | 6장] 익스프레스로 웹 서버 만들기(1) : express설치, 기본 설정

 

[node.js 교과서 | 6장] 익스프레스로 웹 서버 만들기(1) : express설치, 기본 설정

본 글은 Node.JS 교과서(조현영, 길벗출판사) 를 읽고 공부하며 작성한 글로, 틀린 내용이 있을 수 있습니다. express란?- 서버를 제작하는 과정에서의 불편함을 해소하고 편의 기능을 추가한 웹 서

sua0105.tistory.com

(2) sequelize와 sequelize-cli, mysql2 패키지 설치

npm i -D nodemon
npm i express morgan nunjucks sequelize sequelize-cli mysql2

- 콘솔에 입력하여 설치해줍니다

이렇게 폴더들이(cofing, models, seeders 등) 폴더가 생겼으면 성공

- models 폴더 안에 Index.js 파일이 있는지 확인해 줍니다.

- 이 파일은 sequelize-cli가 자동으로 생성해주 것으로 그대로 사용하긴 에러가 많고, 필요없는 부분도 많으니 편집해줍니다.

const Sequelize = require('sequelize');

const env = process.env.NODE_ENV || 'development';
const config = require('/../config/config')[env];
const db = {};
const sequelize = new Sequelize(config.database, config.username, config.password, config);

db.sequelize = sequelize;

module.exports = db;

 

(2) mySQL 연결하기

이제 시퀄라이즈를 통해 익스프레스 앱과 MySQl을 연결해야한다.

app.js를 생성하고 연결해보자

[예시 코드 ; 코드 설명 포함]

//app.js
//모듈 불러오기
/*
express : 웹 서버 프레임워크
path : 파일 및 디렉토리 경로를 다루기 위한 내장 모듈
morgan : http 요청 로깅 미들웨어
nunjunks : 템플릿 엔진으로 html 파일을 랜더링하는데 사용
sequelize 
*/
const express = require('express');
const path = require('path');
const morgan = require('morgan');
const nunjucks = require('nunjucks');

const { sequelize } = require('./models');

const app = express(); //express 앱 인스턴스 생성
app.set('port', process.env.PORT || 3001); //포트 설정, 환경 변수에 없으면 3001
app.set('view engine', 'html'); //nunjunks로 html파일을 템플릿으로 처리하겠다는 말
//nunjucks 설정
nunjucks.configure('views', { //템플릿 파일이 위치한 디렉토리
  express: app, // 익스프레스 앱과 통하
  watch: true,// 템플릿 파일의 변경사항을 감지하여 자동 재로드
});
//시퀄라이즈 데이터베이스 연결
sequelize.sync({ force: false }) // 기존 테이블을 삭제하지 않고 동기화 true : 기존 테이블 삭제
  .then(() => {
    console.log('데이터베이스 연결 성공'); // 동기화 성공시 메시지 출력
  })
  .catch((err) => {
    console.error(err); //오류 발생시 오류를 콘솔에 출력
  });

app.use(morgan('dev')); //미들웨어 사용
app.use(express.static(path.join(__dirname, 'public'))); //정적 파일 제공
app.use(express.json()); //json 파싱하여 req.body에 js 객체로 저장
app.use(express.urlencoded({ extended: false }));

//에러 핸들링 미들웨어
app.use((err, req, res, next) => {
    res.locals.message = err.message;
    res.locals.error = process.env.NODE_ENV !== 'production' ? err : {};
    res.status(err.status || 500);
    res.render('error');
  });
// 서버 시작
  app.listen(app.get('port'), () => {
    console.log(app.get('port'), '번 포트에서 대기 중');
  });

(3) config.json 파일 수정

- mySQL과 연동할 때는 config폴더 안에 있는 config.json 파일을 사용한다.

- 따라서 development 의 password와 database를 자신이 설정한데로 수정한다.

2024.09.29 - [node.js 교과서] - [node.js 교과서 | 7장] MySQL(1) : 데이터베이스 생성하기

 

[node.js 교과서 | 7장] MySQL(1) : 데이터베이스 생성하기

해당 글은 node.js(조현영, 길벗출판사) 책을 읽고 공부하며 작성한 글입니다. 1. 데이터베이스 생성하기(1) mySQL 프롬프트에 접속합니다.(맥)Terminal 실행mysql -h localhost -u root -p비밀번호 입력 그럼

sua0105.tistory.com

서버를 실행해본다.

 

어..? 오류가 났다..

혐짤 주의

진짜 보기만해도 미래가 암울해지는 사진.. 대체 뭐가 문제인거지..?

드라마 한개 보고 다시 침착하게 앉았다.

도와줘 뤼튼!

WOW 소름이 끼쳤다 비밀번호였다

config.json 파일에 비밀번호 수정해줄 때 "" 필수입니다!!!!!!

 

짜자잔~ 연결 성공!

또 작은 뿌듯함을 얻었다..

반응형