我是Sequelize的新手,现在我正在用NodeJS和Sequelize创建一个RESTful api . 我正在试图找出如何更改我的数据库架构,如使用Sequelize更改我的列名称
我创建了这样的模型
sequelize model:create --name MyUser --attributes first_name:string,last_name:string,bio:text
它在Models中创建了一个文件
'use strict';
module.exports = function(sequelize, DataTypes) {
var Page = sequelize.define('Page', {
name: DataTypes.STRING,
text: DataTypes.TEXT,
url: DataTypes.STRING
}, {
classMethods: {
associate: function(models) {
// associations can be defined here
}
}
});
return Page;
};
和迁移文件夹中的一个文件
'use strict';
module.exports = {
up: function(queryInterface, Sequelize) {
return queryInterface.createTable('Pages', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
name: {
type: Sequelize.STRING
},
text: {
type: Sequelize.TEXT
},
url: {
type: Sequelize.STRING
},
createdAt: {
allowNull: false,
type: Sequelize.DATE
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE
}
});
},
down: function(queryInterface, Sequelize) {
return queryInterface.dropTable('Pages');
}
};
问题是如果我想添加新列并更改现有列名称
示例我想更改为此
'use strict';
module.exports = function(sequelize, DataTypes) {
var Page = sequelize.define('Page', {
fullname: DataTypes.STRING,
text: DataTypes.TEXT,
url: DataTypes.STRING,
email: DataTypes.STRING
}, {
classMethods: {
associate: function(models) {
// associations can be defined here
}
}
});
return Page;
};
我已经在Stackoverflow中阅读了一些关于此的内容,就像在本页中一样
How to auto generate migrations with Sequelize CLI from Sequelize models?
和
Sequelize.js: how to use migrations and sync
其中一个页面有一个方法可以在此链接https://www.youtube.com/watch?v=wHTBxtk8ezo中使用Sequelize-cmd自动更改列,但是Sequelize-cmd已经被弃用了,另一种方式和我现在唯一的方法是使用 sequelize migration:create
创建迁移文件并手动编写代码重命名并使用 addColumn
和 renameColumn
添加列
所以,我现在的问题是有一种方法创建迁移文件 addColumn
和 renameColumn
自动像 Sequelize-cmd
做什么而不必手动编写?
1 回答
首先在导航到项目目录后输入
sequelize migration:create --name changeColumn
到您的终端 . 这将在迁移文件夹中创建一个名为changeColumn的新迁移文件,其中包含创建日期 . 然后使用renameColumn方法,该方法接收表名,原始列名和新列名 . 将文件更新为以下代码后,返回终端并键入sequelize db:migrate
以运行迁移 .