【发布时间】:2015-12-18 04:24:21
【问题描述】:
我是 Sequelize 的新手,现在我正在使用 NodeJS 和 Sequelize 创建一个 RESTful api。我正在尝试弄清楚如何更改我的数据库架构,例如使用 Sequelize 更改我的列名
我创建一个这样的模型
sequelize model:create --name MyUser --attributes first_name:string,last_name:string,bio:text
它在模型中创建了一个文件
'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 不需要手动编写一样?
【问题讨论】:
标签: mysql node.js sequelize.js