sequelize 사용하기1

codeing999·2022년 8월 2일
0

Sequelize 사용 일지

목록 보기
1/10
post-thumbnail
post-custom-banner

설치

aws나 로컬에 DB서버? 만드는 과정은 생략.
npm i sequelize mysql2 -S
npm i sequelize-cli -D

이렇게 치면 mysql2, sequelize, sequelize-cli 이 세개가 설치된게 package.json에 보일 것이다.

사용

npx sequelize init
이걸 치면 프로젝트에, models, migrations, seeders, config 폴더가 생길 것이다.
그 중 config 폴더의 config.json에
"development": {
"username": "root",
"password": "1234",
"database": "database_development",
"host": "127.0.0.1",
"dialect": "mysql"
},
3개 중 가장 위에 꺼에 해당 값들을 입력해준다. 이게 이름만 봐도 알듯이 개발단계에서 쓸 데이터베이스인 것 같고 앞으로 쓸 명령어에서도 명시해줘도 되지만 명시안해도 이 개발단계꺼로 쓰게 되는 것 같다.

db 생성

위까지 하고
npx sequelize db:create
이걸 치면 이제 config.json에 입력했던 이름으로 DB가 생성된다.

models와 migrations

여기서부터가 이제 중요한데.
npx sequelize model:generate --name User --attributes email:string,nickname:string,password:string
이렇게 속성과 속성타입들 입력해주고 테이블 이름 넣어서 명령어를 치면
아직 바로 테이블이 생성되는게 아니고
models와 migration 폴더에 이를 기반으로 파일들이 생긴다.
지금 경우엔 user를 입력했으니 각각에 user.js가 생긴다.
그리고 입력해놓은 기본 속성과 타입이 적혀있고 기타 등등이 작성되어있는데
models에는 sequelize 함수로 쿼리문 쓸 때 적용되는 테이블들을 작성한다고 보면 될 듯.
sequelize 함수는 여기 적힌걸 기반으로 속성들과 테이블의 관계를 인식하므로 이걸 잘 작성해야한다.
근데 문제는 이걸 수정한다고 그게 실제 DB에 반영되는 것도 아니고 그걸 하는게 migration 폴더이다.
즉, DB 수정할 목적으로 migration에 테이블을 만든다든가, 속성을 추가한다든가, 속성의 제한사항을 입력한다든가, 테이블간의 관계나 외래키 관계 등등을 그 때 그 때 작성하여 실행하고.
models에는 또 그 변경한 것들을 따로 작성해주어야 하는 것이다.

난 이게 너무 불편했다.

아무튼 migration은 깃헙의 일종의 커밋같은 개념같다.
npx sequelize migration:create --name 테이블이름
이걸 쳐서 migration 파일을 만들고 그 중에
up 항목안에는 이번에 실행할 것들을 적고. down 항목에는 undo명령어를 쳤을 때 실행할 것들을 적는다. 기본적으로는 되돌리는 것들을 적히는 것 같다.
npx sequelize db:migrate
이걸 하면 새로운 migration 파일들의 up에 적힌 것들을 적용시키고
한번 적용시킨 파일은 수정해봤자 의미가 없다. 한번 undo한다음에 다시 실행할 때면 모르지만 그럴 때 아니면 저 수정하고 저 명령어를 쳐봤자 아무 일도 안일어난다.
npx sequelize db:migrate:undo
undo할 때 이 명령어 치면 된다.

profile
코딩 공부 ing..
post-custom-banner

0개의 댓글