Sequelize Model
MySQL 테이블이랑 대응된다.
- 테이블 생성은 CMD / IDE / 시퀄라이즈 모델을 통해 만드는 총 3가지 방법이 있다.
- 기본적으로 모델 이름은 앞 글자 대문자와 단수형으로 테이블 이름은 소문자와 복수형으로 만든다.
모델 생성
models 폴더에 user 파일을 생성한다.
const Sequelize = require("sequelize");
module.exports = class User extends Sequelize.Model {
static init(sequelize) {
return super.init({
email: {
type: Sequelize.STRING(100),
allowNull: false,
unique: true,
},
password: {
type: Sequelize.STRING(200),
allowNull: false,
},
name: {
type: Sequelize.STRING(10),
allowNull: false,
},
age: {
type: Sequelize.INTEGER.UNSIGNED,
allowNull: false,
},
introduce: {
type: Sequelize.TEXT,
allowNull: false,
},
}, {
sequelize,
timestamps: true,
paranoid: true,
underscored: false,
modelName: "User",
tableName: "users",
charset: "utf8",
collate: "utf8_general_ci",
});
}
}
models > user.js
- User라는 모델을 만들고 외부에서 사용할 수 있게 exports 해준다.
- 공식 문서에 소개한 Sequelize.Model이라는 클래스 문법을 사용한다.
- static init은 처음 인수로 테이블 컬럼에 대한 설정이고 다음 인수가 테이블 자체에 대한 설정이다.
- 시퀄라이즈는 알아서 id를 기본 키로 연결하므로 별도로 적어줄 필요는 없다.
- 시퀄라이즈 자료형은 MySQL과 차이가 있다.
MySQL | Sequelize |
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 |
MySQL과 Sequelize 자료형 비교
sequelize | modles/index.js에서 연결하기 위해 db.sequelize 객체를 넣어야 한다. |
timestamps | true: 로우 추가 시 생성/업데이트 시간을 자동으로 기록해 준다. |
paranoid | true: 로우 삭제 시 지운 시각을 자동으로 기록해 준다.(soft delete) |
underscored | true: 스네이크 케이스 사용 여부(기본은 캐멀 케이스) |
modelName | 노드에서 사용할 모델 이름 대문자 단수형으로 만든다. |
tableName | 데이터베이스의 테이블 이름 소문자 복수형으로 만든다. |
charset | 한글 입력 여부 utf8로 설정해 준다. |
collate | 한글 입력 여부 utf8_general_ci로 설정해 준다. |
Sequelize 테이블 옵션
모델을 만들었으니 models 폴더 속 index.js를 수정한다.
const Sequelize = require("sequelize");
const User = require("./user");
const env = process.env.NODE_ENV || "development";
const config = require("../config/config.json")[env];
const db = {};
const sequelize = new Sequelize(
config.database, config.username, config.password, config
);
db.sequelize = sequelize;
db.User = User;
User.init(sequelize);
module.exports = db;
models > index.js
- User 모델을 불러와 db에 담아 db 객체를 require 하여 모델에 접근이 가능하다.
- User.init으로 유저 모델의 static.init 메서드를 호출한다.
- init이 실행되어야 테이블이 모델로 연결된다.
생성 한 모델이 테이블로 생성
서버가 재실행되면 쿼리문이 뜬다.
쿼리문이 보기 싫다면 config 폴더 속 config.json 파일을 수정한다.
logging 속성 추가 후 값을 false로 넣는다.
'데이터베이스' 카테고리의 다른 글
Sequelize N:M associate (0) | 2022.05.05 |
---|---|
Sequelize 1:N associate (0) | 2022.05.05 |
Sequelize 1:1 associate (0) | 2022.05.05 |
Sequelize ORM (0) | 2022.05.03 |
MongoDB Mongoose (0) | 2022.01.24 |