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!
这很奇怪,因为我在一对多关系上做同样的事情,而且效果很好。
感谢您的宝贵时间:)
您在 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
记录以及关联的模型实例。
我是 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!
这很奇怪,因为我在一对多关系上做同样的事情,而且效果很好。
感谢您的宝贵时间:)
您在 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
记录以及关联的模型实例。