【问题标题】:Sequelize db:migrate doesn't update modelSequelize db:migrate 不更新模型
【发布时间】:2019-03-25 19:00:45
【问题描述】:

我使用 sequelize-cli 制作了一个表格,但是我忘记添加一列:标题。

所以我生成了新的迁移:

$ sequelize migration:create --name update-notes

并将这些代码放入迁移文件中:

'use strict';

module.exports = {
  up: (queryInterface, Sequelize) => {

    return queryInterface.addColumn(
      'Notes',
      'title',
      Sequelize.STRING
    );
  },

  down: (queryInterface, Sequelize) => {
   return queryInterface.removeColumn(
     'Notes',
     'title'
   );
  }
};

运行迁移并从数据库检查表架构后,它可以工作:

$ sequelize db:migrate

但是模型还没有我新添加的列:

'use strict';
// models/notes.js
module.exports = (sequelize, DataTypes) => {
  const Notes = sequelize.define('Notes', {
    content: DataTypes.TEXT    // NO 'TITLE' COLUMN
  }, {});
  Notes.associate = function(models) {
    // associations can be defined here
  };
  return Notes;
};

我错过了什么?我应该如何将我的更新应用到模型文件?

如果表中以前的数据与新表模式不兼容怎么办?只是迁移失败,开发人员手动修复问题吗?

【问题讨论】:

  • 使用 Sequelize 迁移,您需要手动更新 both 模型和迁移文件。运行新的迁移不会自动更新您的模型文件。
  • @mcranston18 哦,那是个坏消息?????????不过谢谢,伙计!
  • @mcranston18 嘿,你会发帖回答我可以接受吗?

标签: javascript orm sequelize.js sequelize-cli


【解决方案1】:

很遗憾,使用 Sequelize 迁移,您需要手动更新模型和迁移文件。创建新的迁移文件不会更新您的模型文件,反之亦然。尽管 Sequelize CLI 提供了一些帮助选项,但您通常需要自己确保正确定义模型文件和迁移文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    相关资源
    最近更新 更多