Dir*_*rus 6 mysql node.js sequelize.js
我是 Sequelize 的新手,现在我正在使用 NodeJS 和 Sequelize 创建一个 RESTful api。我正在尝试弄清楚如何更改我的数据库架构,例如使用 Sequelize 更改我的列名
我创建了一个这样的模型
sequelize model:create --name MyUser --attributes first_name:string,last_name:string,bio:text
Run Code Online (Sandbox Code Playgroud)
它在模型中创建了一个文件
'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;
};
Run Code Online (Sandbox Code Playgroud)
和迁移文件夹中的一个文件
'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');
}
};
Run Code Online (Sandbox Code Playgroud)
问题是如果我想添加新列并更改现有列名如何
例子我想改成这个
'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;
};
Run Code Online (Sandbox Code Playgroud)
我已经在 Stackoverflow 中阅读了几页,就像在这个页面中一样
如何使用 Sequelize CLI 从 Sequelize 模型自动生成迁移?
和
一个页面有使用Sequelize-cmd在这个链接的方式来改变列自动https://www.youtube.com/watch?v=wHTBxtk8ezo但Sequelize-CMD已被弃用,其他的方式,我做的唯一途径现在是使用创建迁移文件sequelize migration:create并手动编写代码以使用addColumn和renameColumn
所以,我现在的问题是有没有一种方法可以使用addColumn和renameColumn自动创建迁移文件,就像Sequelize-cmd不必手动编写一样?
sequelize migration:create --name changeColumn导航到您的项目目录后,首先输入您的终端。这会在您的迁移文件夹中创建一个名为 changeColumn 的新迁移文件,其中包含创建日期。然后使用 renameColumn 方法,该方法接受表名、原始列名和新列名。将文件更新为以下代码后,请返回终端并键入sequelize db:migrate以运行迁移。
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.renameColumn('Users',
'beforeName', 'afterName');
},
down: (queryInterface, Sequelize) => {
return queryInterface.renameColumn('Users', 'afterName', 'beforeName');
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6186 次 |
| 最近记录: |