引导Sequelize架构的“正确”方法是什么?

时间:2016-08-09 22:20:27

标签: mysql node.js sequelize.js sequelize-cli

当开始使用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"中重写我的整个架构,它与描述的内容完全相同,但在语法方面却有些不同。

1 个答案:

答案 0 :(得分:0)

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