ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • REST API 서버 만들기 (5) - Sequelize Model, Migration
    Server 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 를 수정해보도록 하겠습니다.

    댓글

Designed by Tistory.