Adding/Removing 字段使用 Sequelize
Adding/Removing field by using Sequelize
我正在使用 Sequelize-cli,但在使用时遇到了一些问题。
请注意,这是我第一次使用 Sequelize,可能我失去了一些概念,非常感谢它告诉我我错过了什么。
我做了一个像这样的简单模型:
$ sequelize model:generate --name Notes --attributes text:content
然后我得到了这个迁移文件:
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable('Notes', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
content: {
type: Sequelize.TEXT
},
createdAt: {
allowNull: false,
type: Sequelize.DATE
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE
}
});
},
down: (queryInterface, Sequelize) => {
return queryInterface.dropTable('Notes');
}
};
但是现在我需要添加新字段"title"字符串类型,但是我找不到任何关于这个过程的相关信息。
我应该 运行 db:migrate:undo 删除所有 table 并更新迁移和模型文件并重做迁移吗?我认为这不是使用 sequelize 的正确方法。
我也一直在混淆"migration"的概念,为什么要用这个?
似乎所有数据在 运行 "migrate:undo" 命令后都消失了,有没有办法保存它们以便我可以在更新 table 架构后恢复数据?
任何建议将不胜感激!
通过创建新迁移并使用 queryInterface.addColumn 创建新字段解决了这个问题!
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.addColumn(
'Notes',
'title',
Sequelize.STRING
);
},
down: (queryInterface, Sequelize) => {
return queryInterface.removeColumn(
'Notes',
'title'
);
}
};
我正在使用 Sequelize-cli,但在使用时遇到了一些问题。
请注意,这是我第一次使用 Sequelize,可能我失去了一些概念,非常感谢它告诉我我错过了什么。
我做了一个像这样的简单模型:
$ sequelize model:generate --name Notes --attributes text:content
然后我得到了这个迁移文件:
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable('Notes', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
content: {
type: Sequelize.TEXT
},
createdAt: {
allowNull: false,
type: Sequelize.DATE
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE
}
});
},
down: (queryInterface, Sequelize) => {
return queryInterface.dropTable('Notes');
}
};
但是现在我需要添加新字段"title"字符串类型,但是我找不到任何关于这个过程的相关信息。
我应该 运行 db:migrate:undo 删除所有 table 并更新迁移和模型文件并重做迁移吗?我认为这不是使用 sequelize 的正确方法。
我也一直在混淆"migration"的概念,为什么要用这个?
似乎所有数据在 运行 "migrate:undo" 命令后都消失了,有没有办法保存它们以便我可以在更新 table 架构后恢复数据?
任何建议将不胜感激!
通过创建新迁移并使用 queryInterface.addColumn 创建新字段解决了这个问题!
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.addColumn(
'Notes',
'title',
Sequelize.STRING
);
},
down: (queryInterface, Sequelize) => {
return queryInterface.removeColumn(
'Notes',
'title'
);
}
};