node.js - 在不重置数据库的情况下在 sequelize 中添加列

标签 node.js postgresql sequelize.js

我正在使用 Sequelize Postgres 数据库,并且我知道我可以通过将一列添加到我的架构中来添加它,然后运行 ​​sequelize.sync({ force: true })

这基本上抛出了我的整个数据库并创建了一个新数据库。

显然,这不会永远是一个可行的解决方案,但我无法弄清楚如何以任何其他方式添加新列。目前,如果我向我的模式添加一列并运行: sequelize.sync({ force: false }) ,它不会抛出任何错误,但不会添加任何新列,所以我只会得到 column "foo" does not exist ,直到我抛出我的整个数据库并重新开始。

当然有一种方法可以在不重置所有内容的情况下添加列吗?有没有我缺少的选项?我无法在文档中的任何地方找到它。

最佳答案

Sequelize 包括使用数据库迁移的能力。实际上,这是您应该在进行更改时构建的东西,尽管如果这是第一个实例和创建,我可以理解不这样做。但是,当您的站点投入生产时,您将需要使用迁移来平滑更新数据库。
看一下文档:

https://sequelize.readthedocs.io/en/latest/docs/migrations/

在 CLI 中,您可以创建一个新的迁移文件并对其进行编辑以包含您的新字段。正如您已经完成的那样,您仍然需要在模型文件中使用它们。

关于node.js - 在不重置数据库的情况下在 sequelize 中添加列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59082431/

相关文章:

mysql - Discord.js/node.js 让代码等待 sql 查询返回结果

python - 如何使用 psycopg2 更新 postgresql 中多行的多列

java - 如何从PreparedStatement调用sql函数?

node.js - Sequelize - 运行同步正在构建多个版本的表,这些表具有不同的 FK 文件名和不同版本中的初始化值

node.js - 如何在 sequelize 中使用绑定(bind)获取原始 sql?

angularjs - 更新到 Angular 2 后,无法在 Firefox 上通过 Protractor 运行 Selenium

javascript - 如何从完成的循环中返回数组

sql - 将逗号分隔的列数据拆分为多列(可变大小)

JavaScript:Promise.All() 和 Async/Await 以及 Map()

javascript - JavaScript 中的模式匹配