postgresql - 使用 Sequelize 在生产环境中更改模式而不丢失数据

标签 postgresql sequelize.js

我正在使用 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。这是可管理的,因为它是发展。 但是我显然不希望我的生产环境使用这个,但是我该如何解决这个问题:

  1. 我有一个用户的架构:姓名、年龄等...
  2. 用户注册
  3. 然后我决定我也想捕获“电子邮件”并将其保存在用户表中。
  4. 未找到“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/

相关文章:

java - Spring Boot 应用程序启动卡住加载 hibernate 文件

sql - Postgre/SQL 递归查询

sequelize.js - 如何在不禁用约束的情况下修复找到的循环依赖?

node.js - Sequelize 不在 postgresql 中创建任何表

sql - 如何在 PostgreSQL 中从右边抓取

macos - PostreSQL93 + postgis2 使用 MacPorts

python - Django group_by 参数取决于 order_by

sequelize.js - GraphQL/Sequelize : SQL alias

javascript - 使用包含关联对 findOrCreate 进行后续处理

node.js - 将数据从 angular 发送到 Node api