如何在sequelize.js中使用子查询?

时间:2019-05-12 10:50:29

标签: sequelize.js

我想将下面的子查询更改为续集代码。 你能告诉我是否可以更改下面的表格

select 
product_seq
, product_type_code
, (select  DETAIL_KOREAN_NAME from CODE_DETAIL where code_id = 'A0001' and detail_code_id =  product_type_code) as product_type
from land.PRODUCT;

例如

models.Product.findAll({
        attributes: ['newColumn']........
    }).then((data)=>{
        res.json(data)
    })

1 个答案:

答案 0 :(得分:0)

这可能是一个很好的例子。

models.Product.findAll({
      attributes: ['product_type_code']
      include: [
        {
          model: models.CODE_DETAIL,
          where: { 
            code_id: { [Op.eq]: 'A0001' },
            detail_code_id =  { [Op.eq]: Sequelize.col('product_type_code') }
          }
          attributes: [ ['DETAIL_KOREAN_NAME', 'product_type'] ]
        }]
    });

请注意,更好的方法是事先建立模型关系,例如:

models.Product.hasMany(models.CODE_DETAIL, { foreignKey: 'detail_code_id', sourceKey: 'product_type_code' });

因此查询如下:

models.Product.findAll({
      attributes: ['product_type_code']
      include: [
        {
          model: models.CODE_DETAIL,
          where: { 
            code_id: { [Op.eq]: 'A0001' }
          }
          attributes: [ ['DETAIL_KOREAN_NAME', 'product_type'] ]
        }]
    });