Sequelize Migrations介绍

本文是 egg Sequelize 的解析和拓展

为什么要使用Migrations

平时我们直接使用mysql的指令去建库,然后编写代码增删改查数据库。但这种方式不利于团队开发。
在项目中,数据表的结构会不断地演进,在不同的环境中(开发环境、测试环境、生产环境中),我们都需要同一套数据结构,如果快速的变更各个环境的数据表?Migrations 解决了这个问题,它帮我们管理数据结构的变更

原理

我们的每一次数据表更新,都需要新建一个Migrations文件
Migrations文件包含了以下信息

  • 操作时间,这个在文件名上
  • 数据库的相关操作,这些在 Migrations文件的updown函数中

有了这些信息,只要把所有Migrations文件中up函数数据库操作执行,即可以将数据表更新到最新状态

注意:所有的数据表修改操作,必须使用Migrations文件,不能直接使用sql直接更新,否则无法利用Migrations正确迭代和回退数据库版本

创建一次数据库的迭代

执行命令

npx sequelize migration:generate --name=<操作名称>

执行后,会生成一个 Migrations文件 (<时间>-init-<操作名称>.js),代表新的一次迭代

up

执行 npx sequelize db:migrate 升级版本
升级版本的时候会调用up函数,需要在函数中对数据表进行更新迭代(创建、修改、删除)

up: (queryInterface, Sequelize) => {
    return queryInterface.createTable('users', { id: Sequelize.INTEGER });
}

down

执行 npx sequelize db:migrate:undo 回退一个变更
回退版本的时候会调用down函数,需要在函数中对数据表进行更新的逆操作,例如在up创建表,down则是删除表

down: (queryInterface, Sequelize) => {
    return queryInterface.dropTable('users');
}

可以通过 db:migrate:undo:all 回退到初始状态

你可能感兴趣的:(Sequelize Migrations介绍)