【发布时间】:2015-11-13 20:43:32
【问题描述】:
我是 Sequelize 的新手,想知道是否有人知道在使用迁移功能时是否有办法避免 Sequelize 中的代码重复?
我的意思是,在迁移中你会得到这样的东西:
//migration-xyz.js
module.exports = {
up: function(migration, DataTypes, done) {
migration.createTable('Users',
{
name: DataTypes.STRING,
surname: DataTypes.STRING
});
},
down: function(migration, DataTypes, done) {
// logic for reverting the changes
}
}
但是模型看起来像这样:
//user.js
module.exports = function(sequelize, DataTypes) {
var User = sequelize.define('User', {
name: DataTypes.STRING,
surname: DataTypes.STRING
});
return User;
};
有没有办法摆脱代码重复?
感谢您的帮助! :)
【问题讨论】:
-
他们在做完全不同的事情。随着您有更多的迁移,最终的
User模型的意图将不太明显。我宁愿有一个User类的真实来源,也不愿查看许多迁移来发现它的属性。 -
感谢您的评论,我同意应该有一个来源或真相。然而,具有 DB 模式的模型文件和许多迁移也具有 DB 模式更改并不会使事情变得更加“一个真实的来源”,相反它会使事情变得更加混乱。因此我的问题是,有没有办法删除重复?
-
什么重复?如果您有 10 个迁移文件都修改了
user表,那么您在应用程序代码中使用的 Schema 是什么样的?迁移甚至不需要存在于同一个源存储库中,除非您专门执行它们,否则它们不会执行。 -
同样的问题,我想使用 migrates 来创建表并保留更改记录。当我们定义模型发生变化时,迁移应该(更好)自动生成,例如南(django)。
标签: node.js sequelize.js