[英]Sequelize: Model is not associated to Model2
我正在嘗試使用 Sequelize 中的一些模型進行查詢。 我有 2 個模型,一個是Project ,另一個是Specification 。 一個項目可以有多個規范,一個規范只能屬於一個項目。 表結構為:
項目:
規格:
這是我對規范 -> 項目的關系:
Project.belongsToMany(Specification);
我用來檢索數據的 function 就是這個。 基本上它會獲取所有數據,包括所有可能的關聯:
// 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:N 關系,在這種情況下,應該使用hasMany
關聯而不是belongsToMany
,因為belingsToMany
用於指示 M:N 關系,在這種情況下,您將需要一個聯結表/模型。 也就是說你只需要更換
Project.belongsToMany(Specification);
和
Project.hasMany(Specification, { foreignKey: 'ProjectId' });
我總是更喜歡明確指出外鍵
使用hasMany
而不是belongsToMany
來定義關系
Project.hasMany(Specification, {
foreignKey: { name: 'ProjectId' },
targetKey: 'ProjectId',
constraints: false,
as: 'specifications',
}),
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.