sequelize 如何建立多表关联并查询?

发布于 2022-09-11 15:34:06 字数 729 浏览 12 评论 0

问题描述:
有如下三个表
图片描述

表关系描述:
1.category表存放有目录id以及名字。
2.category_product表存放有category_id对应category表的id,product_id对应相应的product表,里面有产品的详细信息。


目前建模关系:
category模型中

category.hasMany(category_product,{foreignKey:'id',targetKey:'category_id'})

category_product模型中

category_product.belongsTo(Product, {foreignKey: 'product_id',targetKey: 'id'})

报错问题:

SequelizeDatabaseError: Unknown column 'category_product.id' in 'field list'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

假扮的天使 2022-09-18 15:34:06
//category_product和category关系
category.hasMany(category_product,{foreignKey:'category_id'})
category_product.belongsTo(category,{foreignKey:'category_id'})

//category_product和Product关系
Product.hasMany(category_product,{foreignKey:'product_id'})
category_product.belongsTo(Product, {foreignKey: 'product_id'})

此外hasMany已经废除targetKey了,如果你要用非id做关联键用sourceKey,但从你数据结构来看并不需要。

暖树树初阳… 2022-09-18 15:34:06

1.看下你的model定义字段和类型是否正确。
2.仔细看下这几个方法,调用是否正确再调试看结果。

hasOne - 添加外键到目标模型,并以单数关系混入到源模型
belongsTo - 为当前模型添加外键,并以单数关系混入到源模型
hasMany - 添加外键到目标模型,并以复数关系混入到源模型
belongsToMany - 为连接的表创建N:M关系并以复数关系混入到源模型。会通过sourceId和targetId创建交叉表。

中文文档如下: https://itbilu.com/nodejs/npm...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文