我只是从Sequelize 3.x升级到4.x,我正在努力克制自己在挫折中撕掉我头上的所有头发 .
在这里:在版本3及更低版本中,当关联模型时,我们将创建模块文件,看起来有点像这样:
[file [project root]/models/user.js
]
module.exports = function ( db, Sequelize ) {
let User = db.define ( 'user', {
user_id: {
primaryKey: true,
autoIncrement: true,
type: Sequelize.INTEGER.UNSIGNED
},
company_id: {
type: Sequelize.INTEGER.UNSIGNED,
allowNull: false
},
created_at: {
type: Sequelize.DATE,
allowNull: false,
defaultValue: Sequelize.NOW
}
}, {
classMethods: {
associate: function ( models ) {
User.hasOne ( models.company, { as: 'company', foreignKey: 'company_id' });
}
}
});
return User;
};
现在为"upgrade"到版本4(http://docs.sequelizejs.com/manual/tutorial/upgrade-to-v4.html) classMethods
已被删除,让我无法引用外部模型!
有没有人能够弄清楚如何在Sequelize v4.x中正确构建和维护关联?
注意:我已尝试从其文档中添加指定的方法,但它不起作用:
// model declaration code...
User.associate = function ( models ) {
User.hasOne ( models.company, ... );
};
附加说明:是的,我的所有依赖项都已安装并正常运行 . 我的[文件 [project root]/models/index.js
]正在拉我的所有模特 . 它只是未创建的关联/外键 .
1 回答
我知道你说它不起作用,但是使用v4以下工作
编辑:为了证明,我完全按照你的代码 . 假设你使用的是mysql
你没有提供公司模型,但我认为它是类似的
这会生成SQL
然后给出数据库表
See database diagram
并列出参考
See database reference