我有下表:
Product:
name: string, description: string, image: string
Brand:
name: string
Category:
name: string
一个产品只能有一个品牌。 一种产品可以具有多个类别。
我的关联是:
models/product.js:
Product.associate = function(models) {
Product.hasOne(models.Brand, {
foreignKey: "productId",
as: "brand"
}),
Product.hasMany(models.Category, {
foreignKey: "productId",
as: "categories"
});
}
models/category.js:
Category.belongsTo(models.Product, {
foreignKey: "productId",
onDelete: "CASCADE"
})
models/brand.js:
Brand.belongsTo(models.Product, {
foreignKey: "productId",
onDelete: "CASCADE"
})
1-到目前为止还可以吗?对我来说,models / product.js中的缩进似乎很奇怪。
2-在“我的产品”控制器中,如何检索我的产品的品牌和类别? 目前我有:
controllers/products.js:
list(req, res) {
return Product.findAll({
include: [
{
model: Category,
as: "categories"
}
]
})
.then(products => res.status(200).send(products))
.catch(error => res.status(400).send(error));
}
包括类别,我如何也包含品牌?
我希望输出结果是一系列包含一个品牌和一个或多个类别的产品。
答案 0 :(得分:1)
鉴于已建立的关联,您应该可以添加另一个逗号分隔的模型,如下所示:
controllers/products.js:
list(req, res) {
return Product.findAll({
include: [
{
model: Category,
as: "categories"
},
{
model: Brand,
as: "brand"
}
]
})
.then(products => res.status(200).send(products))
.catch(error => res.status(400).send(error));
}