"include"不起作用的白人多对多关系的续集



我是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 });

当我试图获取" saleitem ">

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记录以及相关的模型实例。

最新更新