Sequelize中的模型和迁移定义之间的主要区别是什么?

SQL数据库的一些Sequelize用户在早期经常使用sync({ force: true }) ,然后切换到迁移。 我很困惑,因为迁移和模型似乎有类似的语法,但也有一些似乎并没有被强调的差异。

一些观察(可能是错误的):

  • 两者中的选项对象是不同的:模型中的options.indexes对象在迁移中不起作用(但在模型中起作用)
  • 使用unique: 'somename'自定义索引名称在迁移字段属性中不起作用(但适用于模型); 但一个unique: true在两个unique: true作品
  • 外键需要显式创build – 并且需要在迁移中设置references (但在模型中,hasMany / belongsTo会自动生成外键字段和外键引用)
  • idupdatedAtupdatedAt必须在迁移中手动创build,而不是模型

最后两个是合理的,因为它是划分迁移责任(build立数据库模式)与模型 – 但是迁移支持/如何工作似乎不同的类似的项目, sync选项加​​剧了我的困惑。

一些问题:

  • 在Sequelize中迁移和模型之间要记住的主要区别是什么(而不是两者之间的一般哲学)? 模型中的哪些选项(使用sync选项时)在迁移中起作用?
  • 当从sync切换到离散迁移时,其他人是否简单地将模型文件复制到迁移? 你是否删除了只适用于模型的无关信息的一部分? 只适用于迁移?

Solutions Collecting From Web of "Sequelize中的模型和迁移定义之间的主要区别是什么?"