Sequelize中的模型和迁移定义之间的主要区别是什么?
SQL数据库的一些Sequelize用户在早期经常使用sync({ force: true })
,然后切换到迁移。 我很困惑,因为迁移和模型似乎有类似的语法,但也有一些似乎并没有被强调的差异。
一些观察(可能是错误的):
- 两者中的选项对象是不同的:模型中的
options.indexes
对象在迁移中不起作用(但在模型中起作用) - 使用
unique: 'somename'
自定义索引名称在迁移字段属性中不起作用(但适用于模型); 但一个unique: true
在两个unique: true
作品 - 外键需要显式创build – 并且需要在迁移中设置
references
(但在模型中,hasMany / belongsTo会自动生成外键字段和外键引用) -
id
,updatedAt
和updatedAt
必须在迁移中手动创build,而不是模型
最后两个是合理的,因为它是划分迁移责任(build立数据库模式)与模型 – 但是迁移支持/如何工作似乎不同的类似的项目, sync
选项加剧了我的困惑。
一些问题:
- 在Sequelize中迁移和模型之间要记住的主要区别是什么(而不是两者之间的一般哲学)? 模型中的哪些选项(使用
sync
选项时)在迁移中起作用? - 当从
sync
切换到离散迁移时,其他人是否简单地将模型文件复制到迁移? 你是否删除了只适用于模型的无关信息的一部分? 只适用于迁移?