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/

相关文章:

node.js - 如何使用存储过程是sequelize orm

mysql - 如何在sequelize中实现带有where条件的子选择

mysql - 我应该在 Node-Express 应用程序的 Controller 和模型之间有一个层吗?

mysql - 使用 sequelize nodejs 仅查询当前月份

node.js - dust.js 通过函数格式化文本

javascript - 如何在 JavaScript 中 stub 库函数

node.js - 当挂载卷中的文件在主机上更改时,文件系统事件不会在 docker 容器中触发

Node.js 和sequelize-typescript - 数据访问对象和业务对象

macos - Mongodb需要3分钟连接

javascript - ExpressJS 和 Mongoose 使用 for 函数多次创建