【问题标题】:Sequelize and MySQL associationsSequelize 和 MySQL 关联
【发布时间】:2021-09-09 11:21:58
【问题描述】:

我正在使用 Sequelize、MySQL 和 NodeJS。我正在尝试关联 3 个表,其布局如下:

products
product_id
name
description

product_tags
product_id
tag_id

tag_names
tag_id 
tag_name

我想将产品与标签表相关联,然后从那里将标签名称与 tag_id 相关联。像下面这样:

SELECT 
name, 
a.product_id,
group_concat(b.tag_id) as tags,
group_concat(tag_name) as tagName
FROM products a
JOIN product_tags b on b.product_id = a.product_id
JOIN tag_names c on c.tag_id = b.tag_id
WHERE name 

然后返回产品名称、标签等。
我只是在努力理解这对于 hasMany、belongsTo 等是如何工作的。 我当前的代码是:

db.products.hasMany(db.product_tags, {foreignKey: 'product_id'});

db.product_tags.belongsTo(db.products, {foreignKey: 'product_id'});
db.product_tags.hasMany(db.tag_names, {foreignKey: 'tag_id'});

db.tag_names.belongsTo(db.product_tags, {foreignKey: 'tag_id'});

这似乎返回了正确布局的表,但我无法在 tag_name 表中插入新标签而不抛出外键错误。任何帮助,将不胜感激。

谢谢,
丹尼

【问题讨论】:

    标签: mysql node.js sequelize.js associations


    【解决方案1】:

    如果有人偶然发现这个答案,我想出了同样的问题:

    db.products.belongsToMany(db.tag_names, { through: 'product_tags',  as: "tags", foreignKey: 'product_id'});
    db.tag_names.belongsToMany(db.products, {through: 'product_tags',  as: "products", foreignKey: 'tag_id'});
    

    解决问题。

    【讨论】:

      猜你喜欢
      • 2016-04-24
      • 2022-01-22
      • 2019-09-23
      • 1970-01-01
      • 2017-05-19
      • 2016-04-11
      • 2017-08-15
      • 2013-10-05
      • 2018-12-09
      相关资源
      最近更新 更多