使用 Sequelize 更改列或添加新列时如何更新迁移文件

Dir*_*rus 6 mysql node.js sequelize.js

我是 Sequelize 的新手,现在我正在使用 NodeJS 和 Sequelize 创建一个 RESTful api。我正在尝试弄清楚如何更改我的数据库架构,例如使用 Sequelize 更改我的列名

我创建了一个这样的模型

sequelize model:create --name MyUser --attributes first_name:string,last_name:string,bio:text
Run Code Online (Sandbox Code Playgroud)

它在模型中创建了一个文件

'use strict';
module.exports = function(sequelize, DataTypes) {
  var Page = sequelize.define('Page', {
    name: DataTypes.STRING,
    text: DataTypes.TEXT,
    url: DataTypes.STRING
  }, {
    classMethods: {
      associate: function(models) {
        // associations can be defined here
      }
    }
  });
  return Page;
};
Run Code Online (Sandbox Code Playgroud)

和迁移文件夹中的一个文件

'use strict';
module.exports = {
  up: function(queryInterface, Sequelize) {
    return queryInterface.createTable('Pages', {
      id: {
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
        type: Sequelize.INTEGER
      },
      name: {
        type: Sequelize.STRING
      },
      text: {
        type: Sequelize.TEXT
      },
      url: {
        type: Sequelize.STRING
      },
      createdAt: {
        allowNull: false,
        type: Sequelize.DATE
      },
      updatedAt: {
        allowNull: false,
        type: Sequelize.DATE
      }
    });
  },
  down: function(queryInterface, Sequelize) {
    return queryInterface.dropTable('Pages');
  }
};
Run Code Online (Sandbox Code Playgroud)

问题是如果我想添加新列并更改现有列名如何

例子我想改成这个

'use strict';
module.exports = function(sequelize, DataTypes) {
  var Page = sequelize.define('Page', {
    fullname: DataTypes.STRING,
    text: DataTypes.TEXT,
    url: DataTypes.STRING,
    email: DataTypes.STRING
  }, {
    classMethods: {
      associate: function(models) {
        // associations can be defined here
      }
    }
  });
  return Page;
};
Run Code Online (Sandbox Code Playgroud)

我已经在 Stackoverflow 中阅读了几页,就像在这个页面中一样

如何使用 Sequelize CLI 从 Sequelize 模型自动生成迁移?

Sequelize.js:如何使用迁移和同步

一个页面有使用Sequelize-cmd在这个链接的方式来改变列自动https://www.youtube.com/watch?v=wHTBxtk8ezo但Sequelize-CMD已被弃用,其他的方式,我做的唯一途径现在是使用创建迁移文件sequelize migration:create并手动编写代码以使用addColumnrenameColumn

所以,我现在的问题是有没有一种方法可以使用addColumnrenameColumn自动创建迁移文件,就像Sequelize-cmd不必手动编写一样?

ela*_*ris 5

sequelize migration:create --name changeColumn导航到您的项目目录后,首先输入您的终端。这会在您的迁移文件夹中创建一个名为 changeColumn 的新迁移文件,其中包含创建日期。然后使用 renameColumn 方法,该方法接受表名、原始列名和新列名。将文件更新为以下代码后,请返回终端并键入sequelize db:migrate以运行迁移。

'use strict';

module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.renameColumn('Users', 
  'beforeName', 'afterName');
 },

  down: (queryInterface, Sequelize) => {
    return queryInterface.renameColumn('Users', 'afterName', 'beforeName');
 }
};
Run Code Online (Sandbox Code Playgroud)