javascript - Sequelize db:migrate 不更新模型
问题描述
我使用 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 迁移,您将需要手动更新模型和迁移文件。创建新的迁移文件不会更新您的模型文件,反之亦然。尽管 Sequelize CLI 提供了一些帮助选项,但您通常需要自己确保正确定义模型文件和迁移文件。
推荐阅读
- c++ - O2 上 Clang 中的尾调用优化 (TCO)
- python - 为什么我们必须在运行 statsmodel 之前将数据类型转换为浮点数以进行汇总
- python - 如何在 aws S3 中解密 PGP 文件
- python - 无法识别 Coral/Google Edge TPU USB 加速器,Virtualbox 解决方法
- api-platform.com - 使用学说将 JSON 数据存储到 TEXT mysql 列中
- gitlab - Gitlab CODEOWNERS 自动添加审批者
- angular - 展开 Angular 材质树的特定节点
- netlify - 如何修复 netlify 托管站点中的 url 重定向?
- powerbi - 如何将只有一个单元格的表格转换为简单的值?
- angular - 加载模块脚本失败