더북(TheBook)

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

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