【发布时间】:2016-12-16 03:01:12
【问题描述】:
在开始使用 sequelize 时,我只是使用 force:true 来保持数据库为开发工作,但现在我正在过渡到测试/生产,这显然不再是一个好的选择。
我已经在我的代码中定义了我的架构,如下所示:
this.Users = this.sequelize.define('Users', {
email: Sequelize.STRING,
display: Sequelize.STRING,
lastlogin: Sequelize.DATE,
});
this.Patterns = this.sequelize.define('Patterns', {
name: Sequelize.STRING,
type: Sequelize.STRING,
});
this.Patterns.belongsTo(this.Users, {as: 'Owner'});
... //a number of other models and relationships
将其转变为数据库初始化工作流程的“正确”方法是什么?特别是,我认为在“init”迁移中进行此操作是有意义的,以便将来的迁移和代码更改可以通过它进行,以便将来任何时候我都可以运行迁移堆栈到获取完全最新的架构。
编辑:我已经考虑过并且可能会奏效,但似乎还不够“优雅”的解决方案。
- 使用
force:true启动新数据库并捕获生成的 SQL 以创建可以在新数据库上运行的“setup.sql”。 - 在 "migration notation" 中重写我的整个架构,这与它所描述的内容相同,但在语法上却大不相同。
【问题讨论】:
标签: mysql node.js sequelize.js sequelize-cli