Sequelize "include" 不工作白多对多关系

Sequelize "include" not working white many-to-many relations

我是 Node 和 Sequelize 的新手,我正在构建一个基本的电子商务。 这些是我的 模型:

const Product = sequelize.define('product', {
  id: {
    type: DataTypes.INTEGER,
    autoIncrement: true,
    allowNull: false,
    primaryKey: true,
  },
  name: {
    type: DataTypes.STRING,
    allowNull: false,
  },
});

const Sale = sequelize.define('sale', {
  id: {
    type: DataTypes.INTEGER,
    autoIncrement: true,
    allowNull: false,
    primaryKey: true,
  },
  isDelivered: {
    type: DataTypes.BOOLEAN,
    defaultValue: false,
    allowNull: false,
  },
});

这些关系:

Sale.belongsToMany(Product, { through: SaleItem });
Product.belongsToMany(Sale, { through: SaleItem });

当我尝试获取“SaleItems”时出现问题

 SaleItem.findAll({
    include: [Product],
  })
  .then(response => {
   console.log(response);
  })

我收到回复:

SequelizeEagerLoadingError: product is not associated to saleItem!

这很奇怪,因为我在一对多关系上做同样的事情,而且效果很好。

感谢您的宝贵时间:)

您在 ProductSale 之间有关联,但在它们与 SaleItem 之间没有关联。

您现有的关联只允许您执行这样的查询:

Sale.findAll({
    include: [Product],
  })
  .then(response => {
   console.log(response);
  })
Product.findAll({
    include: [Sale],
  })
  .then(response => {
   console.log(response);
  })

您需要像这样为 SaleItem 添加关联:

SaleItem.belongsTo(Product);
SaleItem.belongsTo(Sale);

为了获取 SaleItem 记录以及关联的模型实例。