User 모델을 만들고 모듈로 exports했습니다. User 모델은 Sequelize.Model을 확장한 클래스로 선언합니다. 클래스 문법을 사용하지만 클래스에 대한 지식이 없어도 사용할 수 있습니다. 패턴만 숙지하면 됩니다. 모델은 크게 static initiate 메서드와 static associate 메서드로 나뉘어집니다.

    static initiate 메서드에는 테이블에 대한 설정을 하고, static associate 메서드에는 다른 모델과의 관계를 적습니다. static initiate 메서드부터 살펴봅시다. 모델.init 메서드의 첫 번째 인수가 테이블 컬럼에 대한 설정이고, 두 번째 인수가 테이블 자체에 대한 설정입니다.

    시퀄라이즈는 알아서 id를 기본 키로 연결하므로 id 컬럼은 적어줄 필요가 없습니다. 나머지 컬럼의 스펙을 입력합니다. MySQL 테이블과 컬럼 내용이 일치해야 정확하게 대응됩니다.

    단, 시퀄라이즈의 자료형은 MySQL의 자료형과는 조금 다릅니다. 시퀄라이즈는 MySQL 외의 다른 데이터베이스도 처리할 수 있어야 하므로 MySQL의 자료형과는 다를 수밖에 없습니다. VARCHARSTRING으로, INTINTEGER로, TINYINTBOOLEAN으로, DATETIMEDATE로 적습니다. INTEGER.UNSIGNEDUNSIGNED 옵션이 적용된 INT를 의미합니다. 여기에 ZEROFILL 옵션도 사용하고 싶다면 INTEGER.UNSIGNED.ZEROFILL을 적습니다.

    allowNullNOT NULL 옵션과 동일합니다. uniqueUNIQUE 옵션입니다. defaultValue는 기본값(DEFAULT)을 의미합니다. Sequelize.NOW로 현재 시간을 기본값으로 사용할 수 있습니다. SQL의 now()와 같습니다.

    ▼ 표 7-1 MySQL과 시퀄라이즈의 비교

    MySQL

    시퀄라이즈

    VARCHAR(100)

    STRING(100)

    INT

    INTEGER

    TINYINT

    BOOLEAN

    DATETIME

    DATE

    INT UNSIGNED

    INTEGER.UNSIGNED

    NOT NULL

    allowNull: false

    UNIQUE

    unique: true

    DEFAULT now()

    defaultValue: Sequelize.NOW

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.