【发布时间】: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