Node.js
[Sequelize] migration을 이용한 Table 속성 변경 방법들
포시
2022. 12. 22. 15:43
728x90
개요
sequelize를 처음 사용하며 익숙하지 않아 겪는 여러 문제에 대해 직접 해보고 잘 적용된 방법들을 정리한 글
계속 추가될 예정이며 대부분의 기능들은 [공식문서 - queryInterface] 를 통해 직접 참고할 수 있다.
아래 내용들은 모두 migration 파일을 생성하여 진행하는 과정들이며
생성 방법과 실행 방법은 다음과 같다.
생성 방법
npx sequelize migration:generate --name test
실행 방법
npx sequelize db:migrate
컬럼명 변경
/** @type {import('sequelize-cli').Migration} */
module.exports = {
async up (queryInterface, Sequelize) {
await queryInterface.renameColumn('Comments', 'content', 'comment');
},
async down (queryInterface, Sequelize) {
}
};
'content' -> 'comment'
renameColumn('tableName', 'attrNameBefore', 'attrNameAfter')
QueryInterface | Sequelize
sequelize.org
속성 변경
/** @type {import('sequelize-cli').Migration} */
module.exports = {
async up (queryInterface, Sequelize) {
await queryInterface.changeColumn('Comments', 'deletedAt', {
type: Sequelize.DATE,
allowNull: true
});
},
async down (queryInterface, Sequelize) {
await queryInterface.changeColumn('Comments', 'deletedAt', {
type: Sequelize.DATE,
allowNull: false,
});
}
};
deletedAt의 NOT NULL 속성을 Nullable하게 바꿔주는 방법
type 명시를 해야 migrate할 때 에러나지 않는다.
QueryInterface | Sequelize
sequelize.org
속성 제거
/** @type {import('sequelize-cli').Migration} */
module.exports = {
async up (queryInterface, Sequelize) {
await queryInterface.removeColumn('테이블명', '제거할_컬럼명', {});
},
async down (queryInterface, Sequelize) {}
};
728x90