sequelize-cli 修改表 (12)

如何修改表(添加字段/删除字段/修改字段)?

  • 使用Sequelize-CLI管理数据库的目的是为了监控数据库的变化
  • 修改表需要借助 migration 文件修改(这样Sequelize就可以追踪修改过程)

修改步骤

  1. 通过  migration:generate  创建迁移文件
  2. 在迁移文件中编写修改的内容
  3. 通过  db:migrate  执行迁移文件

创建修改表的迁移文件

  1. 初始化迁移文件和对应的模型文件  npx sequelize model:generate --name User --attributes name:STRING 
  2. 执行迁移文件创建表   npx sequelize db:migrate 
  3. 创建一个迁移文件用来修改表  npx sequelize migration:generate --name change-user 

 

编辑该迁移文件

 1 'use strict';
 2 
 3 module.exports = {
 4   // 执行迁移文件就会执行up方法
 5   up: async (queryInterface, Sequelize) => {
 6     // 在Users模型(users表)中添加一个age字段数据类型是int
 7     return queryInterface.addColumn('Users', 'age', {
 8       type: Sequelize.INTEGER
 9     })
10   },
11 
12   down: async (queryInterface, Sequelize) => {
13     /**
14      * Add reverting commands here.
15      *
16      * Example:
17      * await queryInterface.dropTable('users');
18      */
19   }
20 };

运行迁移文件

npx sequelize db:migrate
  • 运行迁移文件后 会自动执行该迁移文件的 up: async () => { ... } 方法

删除添加的字段

 1 'use strict';
 2 
 3 module.exports = {
 4   // 执行迁移文件就会执行up方法
 5   up: async (queryInterface, Sequelize) => {
 6     // 在Users模型(users表)中添加一个age字段数据类型是int
 7     return queryInterface.addColumn('Users', 'age', {
 8       type: Sequelize.INTEGER
 9     })
10   },
11   
12   down: async (queryInterface, Sequelize) => {
13     // 删除Users模型(users表)中的age字段
14     return queryInterface.removeColumn('Users', 'age');
15   }
16 };
npx sequelize db:migrate:undo
  • 编辑迁移文件中的  down: async() => {...} 
  • 回退迁移文件会自动执行 down方法
posted @ 2021-11-07 17:38  霸哥yyds  阅读(604)  评论(1)    收藏  举报