当开始使用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”。答案 0 :(得分:0)
对于初始架构和开发,您可以使用同步。然后,一旦您的应用程序处于活动状态并且您需要更改架构,您应该编写一个将在生产中运行的迁移文件(并且还允许恢复该过程)。它可以由sequelize-cli运行。