我正在使用 Sequelize作为我的 PostgreSQL 数据库的 ORM,并且需要一些关于在生产中进行模式更改而不丢失数据的指示:
// model usage
var User = require('./user')
var Page = require('./page')
var Theme = require('./theme')
User.sync({
force: true
})
Page.sync({
force: true
})
Theme.sync({
force: true
})
在开发中,每次重新启动 API 服务器时我都会丢失数据,因为我有 force: true
。这是可管理的,因为它是发展。
但是我显然不希望我的生产环境使用这个,但是我该如何解决这个问题:
- 我有一个用户的架构:姓名、年龄等...
- 用户注册
- 然后我决定我也想捕获“电子邮件”并将其保存在用户表中。
- 未找到“email”列,因为
force: false
在生产中
如何确保我的生产模式是最新的?我可以在不丢失数据的情况下进行这些架构更改吗?
我来自 Mongo 世界,在那里这不是问题,欢迎任何建议!
最佳答案
在 SQL 世界中,迁移是必经之路。 您需要编写迁移以在表中添加电子邮件列。
如果您使用的是 Sequelize >= 2.0.0 ,那么您可以使用它自己的迁移库:http://docs.sequelizejs.com/en/latest/docs/migrations/
关于postgresql - 使用 Sequelize 在生产环境中更改模式而不丢失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36549302/