如何避免在带有嵌套包含查询的 Sequelize 查询中嵌套过多?

How to avoid too much nesting in Sequelize queries with nested include queries?

提问人:V S Vuca 提问时间:6/5/2023 更新时间:6/5/2023 访问量:91

问:

{
"id": 1,
"uuid": "20-zdswny16so",
"productName": "Air Jordan 1",
"description": "Legendary and iconic.",
"retailPrice": "22000",
"wholesalePrice": 21000,
"hex": "#000000",
"gender.id": 3,
"gender.name": "women",
-> "product.category.id": 1,      <<<<<<<<
-> "product.category.name": "sneakers",   <<<<<<<<
"color.id": 2,
"color.name": "black"
}

在提供答案之前: 我知道“嵌套”这个词在这里不太合适。 我首先使用“raw”来避免对象嵌套

查询:

const items = await models.Item.findAll(  
        {
            raw:true,
            
            attributes: [
                "id",
                "uuid",
                'product.productName',
                "product.description",
                "retailPrice",
                "wholesalePrice",
                "color.hex"
            ],
 
            include: [{
                model:models.Gender,
                attributes:['id','name'],
              
             
            },  
            {
                model: models.Product,
                attributes:[],
                include: [{
                    model:models.Category,
                    attributes:['id','name'],
                }]
            },{
                model: models.Color,
                attributes:['id','name'],
            }],
             
        });

正如你所看到的,有多层次的包括:

对于性别、产品、颜色模型,它还可以(第一级),但类别模型等会很糟糕!

这个想法 product.category.id 成为----> category.id

将列名称从 Category 移动到 Product ATTRIBUTES 并不像将 Product 移动到 TOP QUERY 那样有效(如果解释不当,则会 sry)。

mysql 嵌套 续集.js 包括 左连接

评论

0赞 Anatoly 6/7/2023
仅当您从主道具中列出的包含模型中指示每列的别名时attributes
0赞 V S Vuca 6/7/2023
好的,谢谢,我试试!

答: 暂无答案