Sequelize db:migrate不更新模型

时间:2018-10-21 15:24:46

标签: javascript orm sequelize.js sequelize-cli

我使用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;
};

我想念什么?我应该如何将更新应用到模型文件?

如果表中的先前数据与新表架构不兼容怎么办?只是迁移失败而开发人员手动解决了该问题吗?

1 个答案:

答案 0 :(得分:2)

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