node.js - 嗨,聪明的人,我对(多对多)与 sequelize orm 的关联有疑问

标签 node.js sequelize.js

我对(多对多)与 sequelize orm 的关联有疑问

就我而言,我有 3 张 table

产品,
类别,
products_categories

这是 nodeJS 中的关联

Product.belongsToMany(Categories, {
  through: {
    model: ProductsCategories,
    as: 'products_categories',
  },
  foreignKey: "category_id"
})

Categories.belongsToMany(Product, {
  through: {
    model: ProductsCategories,
    as: 'products_categories',
  },
  foreignKey: "product_id"
})

当我尝试获取带有类别的产品时
sequelize 不会让我返回产品的类别

这里是例子
 const products = await Product.findAll({
      include:{
        model:Categories,
        nested:true,
        through:{
            model: ProductsCategories,
            as: 'products_categories',
        }
      }
    });

请帮助我了解我的错误在哪里))

最佳答案

请将您的模型定义更正为:

Product.belongsToMany(Categories, {
  through: ProductsCategories,
  as: 'products_categories',
  foreignKey: "category_id"
})

Categories.belongsToMany(Product, {
  through: ProductsCategories,
  as: 'products_categories',
  foreignKey: "product_id"
})

并找到全部:
 const products = await Product.findAll({
      include:{
        model:Categories,
        as: 'products_categories'
      }
    });

关于node.js - 嗨,聪明的人,我对(多对多)与 sequelize orm 的关联有疑问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60246276/

相关文章:

javascript - Sequelize - 是否存在双向关联?

orm - GraphQL, Dataloader, [ORM 与否], 有很多关系理解

mysql - Sequelize GROUP BY 仅在主表而不是连接中的完整连接表上聚合

javascript - 使用 Not Null 将 findAll 序列化

node.js - mailgun 的域名示例适用于 Nodejs?

node.js - Redis 客户端 - 在 ('ready' ) 事件

node.js - 更改 Webstorm 中 Node js 调试库的控制台字体颜色

node.js - 如何使用 ExpressJS/Connect/Crypto 获取(大)文件的校验和?

mysql - Sequelize : Using truncate and insert within same transaction

node.js - mongoose 无法使用默认值空对象填充 ref id