我已阅读Stack Overflow和Sequelize网站上的所有文档。
我的数据库具有正确的外键。我将IMAGES模型与CREATION相关联:
Images.associate = (models) => {
Images.belongsTo(models.Creations, {
foreignKey: 'idImagesCreation',
sourceKey: 'id',
onDelete: 'CASCADE',
});
};
在我的控制器中,我这样称呼
list(req, res) {
return Creations
.findAll({
raw: true,
include: [{
model: Images
}]
}).then(creations =>{ etc...
我在我的模型和控制器中尝试使用“as”包括{as:'Images'},但仍然有同样的错误:
SequelizeEagerLoadingError:图片与Creations无关!
我对“(模型)”参数有疑问,在哪里关联查找模型? 我将它们导入models文件夹的索引文件中。这够了吗? 或者错误来自其他来源?
答案 0 :(得分:0)
那是因为Sequelize说这些模型没有这种关联。您拥有从Images
到Creations
的关联,但不是从Creations
到Images
,因此您需要做的就是建立这样的关联:
Creations.associate = (models) => {
Creations.hasOne(models.Images, { as: 'ImagesCreation' });//hasMany depending on your relationship
};
这会在Images
上创建一个名为ImagesCreationId
的FK,现在您可以进行第二次关联。
Images.associate = (models) => {
Images.belongsTo(models.Creations);
};
现在Sequelize以你想要的方式了解这种关联。
我建议您进行迁移,这样您就可以进行正确的关联。