Sequelize: Changing model schema on production(Sequelize:在生产中更改模型架构)
问题描述
我们正在使用 orm sequelize.js 并定义了这样的模型:
We're using the orm sequelize.js and have defined a model as such:
module.exports = function(sequelize, DataTypes) {
var Source = sequelize.define('Source', {
name: {
type: DataTypes.STRING,
allowNull: false,
unique: true
}
}, {
paranoid: true
});
return Source;
};
这被部署到生产环境并使用 sequelize.sync
同步到数据库.下一步,我们添加一个参数:
This is deployed to production and sync'd to the database using sequelize.sync
. Next step, we add a parameter:
module.exports = function(sequelize, DataTypes) {
var Source = sequelize.define('Source', {
name: {
type: DataTypes.STRING,
allowNull: false,
unique: true
},
location: {
type: DataTypes.STRING
}
}, {
paranoid: true
});
return Source;
};
但是,当部署到生产环境时,sequelize.sync
不会添加这个新参数.这是因为 sync
做了一个:
However, when deploying to production sequelize.sync
does not add this new parameter. This is because sync
does a:
如果不存在则创建表
如果表存在,则实际上不会更新架构.这是在他们的文档中注明的.
And does not actually update the schema if the table exists. This is noted in their documentation.
唯一的选择似乎是 { force: true }
,但这对于生产数据库来说是不行的.
The only option seems to be to { force: true }
, however this is not okay for a production database.
有谁知道在需要更改时如何正确更新架构?
Does anyone know how to properly update the schema when changes are necessary?
推荐答案
你想实现 Sequelize 迁移:
You want to implement Sequelize migrations:
http://docs.sequelizejs.com/manual/tutorial/migrations.html
这些将使您能够在已知状态之间转换开发人员、暂存和生产数据库.
These will enable you to transition developer, staging, and production databases between known states.
这篇关于Sequelize:在生产中更改模型架构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Sequelize:在生产中更改模型架构


基础教程推荐
- 我可以在浏览器中与Babel一起使用ES模块,而不捆绑我的代码吗? 2022-01-01
- Chart.js 在线性图表上拖动点 2022-01-01
- Vue 3 – <过渡>渲染不能动画的非元素根节点 2022-01-01
- 自定义 XMLHttpRequest.prototype.open 2022-01-01
- 用于 Twitter 小部件宽度的 HTML/CSS 2022-01-01
- 如何使用TypeScrip将固定承诺数组中的项设置为可选 2022-01-01
- html表格如何通过更改悬停边框来突出显示列? 2022-01-01
- 直接将值设置为滑块 2022-01-01
- 如何使用JIT在顺风css中使用布局变体? 2022-01-01
- Electron 将 Node.js 和 Chromium 上下文结合起来意味着 2022-01-01