내 기본 할일 프로젝트의 메타데이터 테이블에 대한 다음과 같은 후속 모델이 주어지면, 후속작의 마이그레이션을 사용하여 몇 가지 변경을 적용하고 싶습니다.
module.exports = (sequelize, Sequelize) => { const Metadata = sequelize.define("metadata", { id: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true }, urgencyId: { type: Sequelize.INTEGER, allowNull: true }, dataId: { type: Sequelize.INTEGER, allowNull: true }, taskTypeId: { type: Sequelize.INTEGER, allowNull: true }, projectId: { type: Sequelize.INTEGER, allowNull: true }, data_id: { type: Sequelize.INTEGER, allowNull: true }, }); Metadata.associate = function (models) { Metadata.belongsTo(models.data,{ foreignKey: { name: 'data_id', allowNull: false, hooks: true }, onDelete: 'cascade' }); }; return Metadata; };
Sequelize는 본질적으로 데이터베이스 커밋과 유사한 마이그레이션 파일을 활용합니다. 명령줄에서 마이그레이션 파일 형식을 생성하려면:
npx sequelize-cli migration:generate --name data-columns-rename
이렇게 하면 /migrations 폴더에 템플릿과 위 명령에 제공한 이름(이 경우 data-columns-rename.js 앞에 현재 날짜/시간이 옴)이 포함된 마이그레이션 파일이 생성됩니다.
당신을 위해 생성된 템플릿 마이그레이션 파일:
'use strict'; /** @type {import('sequelize-cli').Migration} */ module.exports = { async up (queryInterface, Sequelize) { /** * Add altering commands here. * * Example: * await queryInterface.createTable('users', { id: Sequelize.INTEGER }); */ }, async down (queryInterface, Sequelize) { /** * Add reverting commands here. * * Example: * await queryInterface.dropTable('users'); */ } };
async up 명령은 테이블을 변경하려고 실행하는 명령이고, async down 명령은 변경 사항을 제거하기 위해 실행됩니다. 마이그레이션을 수행할 때 down 명령이 반대인지 확인하세요.
제 경우에는 기본적인 할일 유형 테이블 정보에 대한 열 이름을 변경하려고 하므로 채워진 마이그레이션 테이블은 다음과 같습니다.
'use strict'; /** @type {import('sequelize-cli').Migration} */ module.exports = { async up (queryInterface, Sequelize) { await queryInterface.removeColumn('metadata','dataId') // renameColumn: table, old column name , new column name await queryInterface.renameColumn('metadata','urgencyId','urgency_id') await queryInterface.renameColumn('metadata','taskTypeId','task_type_id') await queryInterface.renameColumn('metadata','projectId','project_id') }, async down (queryInterface, Sequelize) { await queryInterface.addColumn('metadata','dataId', { type: Sequelize.INTEGER, allowNull: false }) await queryInterface.renameColumn('metadata','urgency_id','urgencyId') await queryInterface.renameColumn('metadata','task_type_id','taskTypeId') await queryInterface.renameColumn('metadata','project_id','projectId') } };
(이러한 변경 사항은 단순히 Postgres에서 원하는 대로 스네이크 케이스에 아직 익숙하지 않기 때문입니다.)
마이그레이션 테이블이 준비되면 이 명령으로 실행하세요
npx sequelize-cli db:migrate
명령 실행의 다른 인쇄물 중에서 성공 여부를 확인할 수 있는 핵심 텍스트는 다음과 같습니다.
== 20241224113716-metadata-columns-rename: migrating ======= == 20241224113716-metadata-columns-rename: migrated (0.065s)
DBeaver의 이 스크린샷에서 확인된 변경 사항을 볼 수 있습니다.
Sequelize 시작의 기본 사항을 설명하는 게시물에 관심이 있으면 알려주세요.
위 내용은 마이그레이션 순서화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!