Postgres, MySQL, MariaDB, SQLite, Microsoft SQL Server를 지원하는 Promise 패턴 기반의 Node.js ORM이다.
Promise 패턴은 JavaScript의 비동기 코드를 더 우아하게 만들어주며, 체이닝을 통해 콜백 지옥에서 탈출할 수 있고, 깔끔하게 예외처리를 할 수 있다.
async와 await를 이용해서 간편하게 비동기 제어도 가능.
자동으로 DBMS의 데이터를 객체 형태로 변환해줘서 더 객체 지향적인 코드를 생산할 수 있도록 도와주며 이를 통해 개발자는 데이터를 가지고 어떤 작업을 할지에 집중가능하다!
손쉽게 DBMS 변경 가능
npm install sequelize // 시퀄라이즈 설치
npm install mysql2 // mysql2 설치
npm install -g sequelize-cli // sequelize-cli를 전역으로 설치한다.
위의 3종세트를 설치 한 후
sequelize init
터미널에 sequelize init 명령어를 사용하게 되면 config, models, migrations, seeders 폴더가 생성된다.
모델을 정의하는 method는 define()이며,
sequelize.define('객체 이름', 스키마 정의, 테이블 설정)로 사용할 수 있다.
module.exports = (sequelize, DataTypes) => {
return sequelize.define(
"messages", // 테이블 이름
{
// 스키마 정의
messageContent: {
// column 이름
type: DataTypes.STRING(500), // 데이터 타입 설정
allowNull: false // null 허용 설정
},
userId: {
type: DataTypes.INTEGER,
allowNull: false
},
roomId: {
type: DataTypes.INTEGER,
allowNull: false
}
},
{
// 테이블 옵션
timestamps: true,
underscored: true,
paranoid: true
}
);
};
테스트 하려면 sequelize.sync()
를 작성하고 코드 실행 후 mysql에 접속하여 데이터테이블 생성 여부를 확인한다.
터미널 창에서 명령어를 통해서도 테이블을 정의할 수 있다.
sequelize model:create --name TABLE_NAME --attributes "COLUMN1:type, COLUMN2:type, COLUMN3:type"
sequelize model:create --name user --attributes nickName: string, passWord: string
옵션을 설정하기 위해서는 user.js 파일에 직접 들어가 설정을 해야한다.
그리고 설정을 적용시키기 위해서는 user table을 drop하고 다시 sequelize.sync()를 실행시켜 새로 생성해줘야 한다.
user.js 파일의 옵션을 수정했다면 migrations 폴더에 있는 user의 migrations 파일 또한 동일하게 수정해줘야 한다.
수정을 완료 했다면 아래의 명령어를 실행한다.
sequelize db:migrate
위의 명령어 까지 실행한다면 테이블이 정의된 부분이 migrate 된 것이다.