如何在迁移后向架构添加新属性?

时间:2018-02-08 08:13:12

标签: mysql node.js migration sequelize.js sequelize-cli

目前我正在开发一个node.js项目,我在构建模式时发现了一个问题,通常,我使用http://docs.sequelizejs.com/manual/tutorial/migrations.html提供的命令行来定义我的模式,即{{1}在$ node_modules/.bin/sequelize model:generate --name User --attributes firstName:string,lastName:string,email:string之后,我可以将这些属性写入数据库。但是,我想知道如何在迁移后向架构添加新属性,我搜索并发现此https://github.com/sequelize/cli/issues/133正在讨论此问题,但在我尝试解决方案并再次运行$ node_modules/.bin/sequelize db:migrate后,它没有写原始架构的新属性,我不明白问题的位置,下面是我的代码,我试图添加两个属性' address'& '高度'进入用户架构,你能给我一些建议吗?谢谢!

$ node_modules/.bin/sequelize db:migrate

1 个答案:

答案 0 :(得分:1)

此问题已经解决,您可以使用下面的链接How to Add, Delete new Columns in Sequelize CLI来解决该问题,也可以查看sequelize的查询部分以查看文档http://docs.sequelizejs.com/class/lib/query-interface.js~QueryInterface.html,真正的答案应该是

module.exports = {
  up: function (queryInterface, Sequelize) {
    return [
      queryInterface.addColumn(
        'users',
        'height',
        {
          type: Sequelize.STRING,
        }
      ),
      queryInterface.addColumn(
        'users',
        'address',
        {
          type: Sequelize.STRING,
        }
      )
    ];
  },

  down: function (queryInterface, Sequelize) {
    return [
      queryInterface.removeColumn('users', 'height'),
      queryInterface.removeColumn('users', 'address')
    ];
  }
};

然后你可以输入

sequelize migration:create --name add-height-and-address-to-user
sequelize db:migrate

将新属性迁移到模型中。