개발이야기

[TIL]24.Node sequelize mysql 연결 + model 정의하기

무서운승태 2023. 11. 15. 20:46
728x90

오늘은 과제를 위해 sequelize를 이용하여 mysql을 연결을 해보았다. 처음으로 하는 연결이어서 헤매는 부분이 많았다.

 

 

Sequelize mysql 세팅하기

일단 sequelize가 설치되어있다는 가정하에 진행해 보겠다. 프로젝트를 생성 후 다음과 같은 명령어를 입력한다. 그럼 다음과 같은 3개의 폴더가 생성된다. seeder에 대해서는 지금 당장 사용하지 않을 것이다.

npx sequelize-cli init
  • config
  • migrations
  • seeder

config 폴더 내에는 DB접속을 위한 config.json 파일이 생성되어있을것이다.(최초 생성은 json파일이지만 나는 ES6 모듈을 이용하여 세팅을 하여서 자바스크립트 형식으로 변경된 상태이다.)

 

내부에는 DB접속 정보가 있다.env로 환경변수 처리가 되어있다. 정보가 정상적으로 입력되었다면 메인 app에서 

DB접속을 테스트 해볼수 있다.

try {
  await sequelize.authenticate();
  console.log('Connection has been established successfully.');
} catch (error) {
  console.error('Unable to connect to the database:', error);
}

다음과 같은 코드를 작성하여있을때 에러가 나지 않으면 정상적으로 접속이 완료된 것이다!!

 

Model, Migration 정의하기

  • model이란
    • 데이터베이스 테이블을 추상화한 개념
    • sequelize의 Model class를 상속받는다

 

쉽게 생각해서 데이터베이스 테이블을 자바스크립트에서 객체화해서 사용한다. 그리고 model을 정의한다는 것은 그 테이블을 class화 시킨다고 생각하니 조금은 이해가 쉬워졌다.

 

model을 정의하는 두 가지의 방법이 있는데 그중 한 개인 클래스로 정의해서 Model class를 상속받는 방법으로 사용할 것이다.

npx sequelize model:generate --name User --attributes (생성할 테이블의 컬럼정보들)email:string,nickname:string,password:string

명령어를 입력하면 migration 파일과 model파일이 생성된다.

앞서 이야기했지만 나는 ES6모듈 방식으로 사용해서 그에 맞게 커스터마이징 하였으나 기본은 commonjs 방식으로 되어있다.

 

https://sequelize.org/docs/v6/core-concepts/model-basics/

 

Model Basics | Sequelize

In this tutorial you will learn what models are in Sequelize and how to use them.

sequelize.org

  •  migration이란
    • git을 사용하여 소스의 버전을 관리, 추적하는 것처럼 마이그레이션을 사용하여 변경사항을 추적한다
    • 마이그레이션 파일 내에는 새상태와 이전상태로 돌아갈 수 있는 코드가 작성되어 있다.

up: 새상태로 업데이트한다.

donw: 보통 이전 상태로 되돌리거나 다른 처리를 할 때사용 기본은 테이블을 삭제시켜 준다.

 

이 코드를 작성하면 마이그레이션에 선언된 상태로 업데이트한다.

npx sequelize-cli db:migrate
npx sequelize-cli db:migrate --config ./config/config.cjs (기본 설정파일에서 변경한경우 직접 경로를 명시해주어야한다)

 

반대로 이 코드를 작성하면 마이그레이션에 선언되어 있는 이전상태로 돌아갈 수 있도록 한다.

npx sequelize-cli db:migrate:undo
npx sequelize-cli db:migrate:undo --config ./config/config.cjs

 

 

https://sequelize.org/docs/v6/other-topics/migrations/

 

Migrations | Sequelize

Just like you use version control systems such as Git to manage changes in your source code, you can use migrations to keep track of changes to the database. With migrations you can transfer your existing database into another state and vice versa: Those s

sequelize.org