我是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!
这很奇怪,当然我也在一对多关系上做同样的事情,并且工作得很好。
谢谢你的时间:)
您在Product
和Sale
之间有关联,但它们与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
记录以及相关的模型实例。