美文网首页
Sequelize Migrations介绍

Sequelize Migrations介绍

作者: CandyTong_ | 来源:发表于2019-01-27 22:46 被阅读0次

    本文是 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介绍

          本文链接:https://www.haomeiwen.com/subject/ebxojqtx.html