如何在更改模型后创建 Sequelize cli 数据库迁移

问题描述 投票:0回答:3

我从续集开始,并在线关注他们的视频教程。运行后

node_modules/.bin/sequelize model:create --name User --attributes username:string

node_modules/.bin/sequelize model:create --name Task --attributes title:string

创建了用于创建用户和创建任务的迁移文件。然后我必须将关联添加到每个模型,如下所示:

// user.js
classMethods: {
  associate: function(models) {
    User.hasMany(models.Task);
  }
}

// task.js
classMethods: {
  associate: function(models) {
    Task.belongsTo(models.User);
  }
}

但是,用于创建用户和任务表的迁移文件已经创建。我是否必须手动更新它们才能添加关系? “migration:create”命令创建迁移骨架文件。我是手动填写骨架文件还是除了模型创建之外还有其他方法可以自动创建完整的迁移文件?

P.S 我看到了以下 stackoverflow 问题:如何使用 Sequelize CLI 从 Sequelize 模型自动生成迁移?

node.js orm sequelize.js
3个回答
11
投票

您可以从空迁移文件创建单独的迁移。当我需要向表中添加一些额外的列时,我就这样做了。

sequelize migration:create --name users

然后在我的新迁移文件中。

module.exports = {
  up: function (queryInterface, Sequelize) {
    queryInterface.addColumn(
      'Users',
      'url',
      Sequelize.STRING
    );
  },

  down: function (queryInterface, Sequelize) {
    queryInterface.removeColumn(
      'Users',
      'url',
      Sequelize.STRING
    );
  }
};

然后运行迁移。

sequelize db:migrate

0
投票

尝试这个新的 npm 包

Sequelize-mig

安装:

npm install sequelize-mig -g / yarn global add sequelize-mig

然后像这样使用它

sequelize-mig migration:make -n <migration name>

它会自动为您生成包含所有更新的迁移文件


0
投票

当您更新 Sequelize 模型并需要生成迁移时,典型的方法是手动创建迁移文件。然而,这个过程可能会重复并且容易出错。

以下是如何使用我的开源 CLI 工具实现自动化,

sequelize-migration-builder


手动方法

手动创建迁移:

  1. 识别模型中的更改。
  2. 使用 Sequelize CLI 编写迁移文件:
    npx sequelize-cli migration:generate --name <migration-name>
    
  3. up
    down
    方法中添加架构更改(列、约束等)。

虽然有效,但在管理多个模型时,这种方法会变得很麻烦。


自动化解决方案

使用

sequelize-migration-builder
,您可以自动化此过程。它直接从更新的模型生成 Sequelize 迁移文件,节省您的时间和精力。


使用步骤
sequelize-migration-builder

  1. 安装软件包:

    npm install sequelize-migration-builder --save-dev
    
  2. 运行 CLI 命令:

    npx migrator-plugin create-migration --models ./models
    
    • --models
      :Sequelize 模型文件夹的路径。
  3. 生成的迁移文件将出现在

    migrations
    文件夹中,可以与 Sequelize CLI 一起使用。


好处

  • 自动化重复性任务。
  • 生成与 Sequelize CLI 兼容的迁移文件。
  • 支持
    sequelize.define
    和基于类的模型。

GitHub 存储库

如果您有兴趣,可以在这里找到更多详细信息:
🔗 GitHub 存储库

该工具是开源的,欢迎贡献!

© www.soinside.com 2019 - 2024. All rights reserved.