Man*_*mro 3 associations node.js sequelize.js
我有一个模型 SKUValue ,它与其他两个模型VariantOptions和ProductVariant相关联。我创建了一个续集查询,将SKUValue值与VariantOptions和ProductVariant “左连接” ,并带来结果。
序列化查询
await SKUValue.findAll({
where: {
productId: '7bde8a1d-5f6c-4349-bfda-428399c88291'
},
include: [
{
model: VariantOption,
attributes: ['name']
},
{
model: ProductVariant,
attributes: ['name']
}
],
attributes: ['SKUId']
});
Run Code Online (Sandbox Code Playgroud)
查询结果返回一个数组,其中属性VariantOption和ProductVariant是一个嵌套对象,并且只有一个字段。
[
{
"SKUId": "72edd3ca-fa12-4234-ba8c-dd008eb416d5",
"VariantOption": {
"name": "Large"
},
"ProductVariant": {
"name": "Size"
}
},
{
"SKUId": "72edd3ca-fa12-4234-ba8c-dd008eb416d5",
"VariantOption": {
"name": "Red"
},
"ProductVariant": {
"name": "color"
}
}
]
Run Code Online (Sandbox Code Playgroud)
如何以VariantOption和ProductVariant的结果不返回嵌套对象而仅返回一个搅拌的方式查询属性。
一般来说,我希望结果是这样的
[
{
"SKUId": "72edd3ca-fa12-4234-ba8c-dd008eb416d5",
"VariantOption.name": "Large",
"ProductVariant.name": "Size"
},
{
"SKUId": "72edd3ca-fa12-4234-ba8c-dd008eb416d5",
"VariantOption.name": "Red",
"ProductVariant.name": "Color"
}
]
Run Code Online (Sandbox Code Playgroud)
我已经找到了我的问题的答案。
使用Sequelize.literal,我们可以轻松地将内部属性添加到外部属性中。
return await SKUValue.findAll({
where: {
productId: '7bde8a1d-5f6c-4349-bfda-428399c88291'
},
include: [
{
model: VariantOption,
attributes: []
},
{
model: ProductVariant,
attributes: []
}
],
attributes: [
'SKUId',
[Sequelize.literal('"ProductVariant"."name"'), 'productVariant'],
[Sequelize.literal('"VariantOption"."name"'), 'variantOption']
]
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4727 次 |
| 最近记录: |