node js sequelize 在一个关联中获取 child 和 subchild
node js sequelize Getting child and subchild in one association
我的类别 table 有很多产品,而且产品 table 有很多图片
我可以单独拿到它们,但我想一次性把它们放在一起
const categoriesList = await Categories.findAll({
include:['myProducts']
})
和我的关系如下
db.Products.hasMany(db.ProductImages,{as:"productImages",foreignKey: 'productId' })
db.Categories.hasMany(db.Products,{as:"myProducts",foreignKey:"categoryId"})
当我查询类别时,我可以通过什么方式获得带有图片的产品?
我试过原始查询
const resd=await db.sequelize.query("SELECT * FROM categories INNER JOIN products ON products.category=categories.id INNER JOIN productimages ON productimages.productId=products.id");
res.json({re:resd})
它工作正常,但显然所有东西都显示在一起
我希望它们采用嵌套模式
预期行为:
{
"id": 1164,
"name": "Shirt",
"color": "red",
"myProducts":[{
"id":1,
"name": "raglan",
"price":"1200",
categoryId:1164,
"productImages":[{
id:12,
"image":"someimage.png",
"productId":1
}]
}]
您可以在第一个 include
选项中使用嵌套的 include
选项:
const categoriesList = await Categories.findAll({
include:[{
model: Products,
as: 'myProducts',
include: [{
model: ProductImages,
as: 'productImages'
}]
}]
})
虽然我不建议加载 all-in-one 考虑到正在加载大量图像。
我的类别 table 有很多产品,而且产品 table 有很多图片
我可以单独拿到它们,但我想一次性把它们放在一起
const categoriesList = await Categories.findAll({
include:['myProducts']
})
和我的关系如下
db.Products.hasMany(db.ProductImages,{as:"productImages",foreignKey: 'productId' })
db.Categories.hasMany(db.Products,{as:"myProducts",foreignKey:"categoryId"})
当我查询类别时,我可以通过什么方式获得带有图片的产品?
我试过原始查询
const resd=await db.sequelize.query("SELECT * FROM categories INNER JOIN products ON products.category=categories.id INNER JOIN productimages ON productimages.productId=products.id");
res.json({re:resd})
它工作正常,但显然所有东西都显示在一起
我希望它们采用嵌套模式
预期行为:
{
"id": 1164,
"name": "Shirt",
"color": "red",
"myProducts":[{
"id":1,
"name": "raglan",
"price":"1200",
categoryId:1164,
"productImages":[{
id:12,
"image":"someimage.png",
"productId":1
}]
}]
您可以在第一个 include
选项中使用嵌套的 include
选项:
const categoriesList = await Categories.findAll({
include:[{
model: Products,
as: 'myProducts',
include: [{
model: ProductImages,
as: 'productImages'
}]
}]
})
虽然我不建议加载 all-in-one 考虑到正在加载大量图像。