Sequelize:模型未关联到 Model2
Posted
技术标签:
【中文标题】Sequelize:模型未关联到 Model2【英文标题】:Sequelize: Model is not associated to Model2 【发布时间】:2021-12-29 20:47:08 【问题描述】:我正在尝试使用 Sequelize 中的几个模型进行查询。我有 2 个模型,一个是 Project,另一个是 Specification。一个项目可以有多个规范,一个规范只能属于一个项目。表结构为:
项目:
标题 说明 创建时间 更新时间规格:
标题 说明 ProjectId(Projects 表中的外键)这是我对规范的关系 -> 项目:
Project.belongsToMany(Specification);
我用来检索数据的函数就是这个。基本上它会获取所有数据,包括所有可能的关联:
// Retrieve all Projects from the database.
exports.findAll = (req, res) =>
Project.findAll(
include: [
all: true
]
)
.then(data =>
res.send(data);
)
.catch(err =>
res.status(500).send(
message:
err.message || "Some error occurred while retrieving projects."
);
);
;
最后,我得到的错误是:
"message":"specification is not associated to project!"
有人可以帮助我或教我如何完成查询吗?我一直在尝试,但无法得到正确的结果。 谢谢!
【问题讨论】:
【参考方案1】:如果你将你的结构描述为
一个项目可以有多个规范,一个规范只能属于一个项目
那么这是一个通常的 1:N 关系,在这种情况下,应该使用 hasMany
关联而不是 belongsToMany
,因为 belongsToMany
用于指示 M:N 关系,在这种情况下,您将需要一个联结表/模型。
也就是说你只需要更换
Project.belongsToMany(Specification);
与
Project.hasMany(Specification, foreignKey: 'ProjectId' );
我总是更喜欢明确指出外键
【讨论】:
【参考方案2】:使用hasMany
而不是belongsToMany
来定义关系
Project.hasMany(Specification,
foreignKey: name: 'ProjectId' ,
targetKey: 'ProjectId',
constraints: false,
as: 'specifications',
),
【讨论】:
以上是关于Sequelize:模型未关联到 Model2的主要内容,如果未能解决你的问题,请参考以下文章