-
REST API 서버 만들기 (5) - Sequelize Model, MigrationServer 2020. 4. 1. 21:09
<참고>
REST API 서버 제작 수업을 듣고 포스팅을 하는 게시글 입니다.
서버 개발자가 아니고, 노드를 전문적으로 사용하는 개발자가 아니기에 오류가 있을 수 있습니다.
윈도우로 진행하시는 분들은 콘솔 명령어 수행 시 GitBash 사용을 권장드립니다.
이번 강의에서 작업 할 내용
- Model 생성하기
- Migration 하기
- Seeder 생성하기
Model & Migration 파일 생성하기
ORM 기반으로 작업을 하기에 Model 이 있고 그 Model 클래스에 맞추어 DB를 생성해주기 위한 Migration 파일이 있습니다.
쉽게 말해
Mysql -> Sequelize -> Model -> Use! 이렇게 되는것이죠
그리고 Model은 항상 최근에 적용시킨 Migration 파일과 구조가 동일 하여야 정상적으로 접근이 가능합니다.
Model 과 Migration 파일을 생성해보도록 하겠습니다.
`sequelize model:generate --name user --attributes "nickname:String,password:String"`
명령어를 간단하게 보면
[--name user] user 라는 이름의 모델에
[--attributes "nickname:String,password:String"] String 타입의 nickname 과 String 타입의 password 를 가지고 있는
모델을 만들어라 라는 명령어 입니다.
명령어를 입력하면 New model 과 New migration 파일들이 만들어 진것을 볼 수 있습니다.
우선 migrations/v1 폴더의 새로 추가된 파일을 아래와 같이 수정 해주도록 합시다.
nickname 과 password는 null을 허용 하면 안됨으로 allowNull : false를 추가해주도록 합니다.
user.model.js 도 파일이름을 변경 해주고 아래와 같이 수정해주도록 합니다.
음? id와 createAt, updateAt은 어디있나요?
id 는 auto_increment 옵션을 가지고 있으므로 따로 설정해주지 않아도 됩니다.
createAt과 updateAt은 timestamps가 true 라면 자동으로 기입이 됨으로 이 또한 따로 적어주지 않아도 됩니다.
sequelize.define('user', {...}) 부분도 sequelize.define('User', {...}) 로 변경해주도록 합니다.
나중에 외부에서 접근하는 모델명이 바로 'User' 이부분 입니다.
associate 함수는 나중에 Foreign Key를 설정해주기 위해서 빈 함수로 준비해줍니다.
toJSON을 재정의 하여 id와 nickname만 출력되도록 합니다.
Migration 하기
이렇게 Model 과 Migration 파일을 준비 하였으면 본격적인 Migration을 해보도록 하겠습니다.
`sequelize db:create` : DB를 생성합니다.
`sequelize db:migrate` : DB를 Migration 합니다.
MySql에 접속하여 정상적으로 적용되었는지 확인을 해주도록 합니다.
보다시피 DB가 정상적으로 생성이 되었고 Table Column 옵션도 잘 적용되어 있는 것을 볼 수 있습니다.
Seeder 생성하기
Seeder는 DB를 생성하자마자 필수적으로 가지고 있어야 하는 정적 데이터를 넣을때 사용합니다.
하지만 지금 상황에서는 테스트 데이터를 넣는 방향으로 사용을 해보도록 하겠습니다.
Seeder 파일을 하나 생성해주도록 합시다.
`sequelize seed:generate --name dummy-data
그리고 아래와 같이 작성을 해주도록 합니다.
그 다음 `sequelize db:seed:all` 명령어를 통해 작성한 시드파일을 DB에 적용시켜 보도록 하겠습니다.
DB에도 정상적으로 들어간 것을 확인 해주도록 합시다
굳 :)
다음 강의에서는 앞서 작성하였던 user.controller.js 를 수정해보도록 하겠습니다.
'Server' 카테고리의 다른 글
REST API 서버 만들기 (7) - 패스워드 암호화 및 JWT 발급하기 (0) 2020.04.10 REST API 서버 만들기 (6) - CRUD 메서드 만들기 (0) 2020.04.06 REST API 서버 만들기 (4) - Dotenv, Sequelize 설치 및 세팅하기 (3) 2020.04.01 REST API 서버 만들기 (3) - Router 와 Controller (0) 2020.03.31 REST API 서버 만들기 (2) - Express 설치 (0) 2020.03.30