Sequelize关联查询,where影响全局的解决


需求背景

系统字段关联公司字段表,通过查询所有的系统字段然后关联查询指定的公司对应的字段。
image.png

问题代码

 const sysField = ctx.model.SysDictionary;
    const comField = ctx.model.CompanyDictionary;

    sysField.hasOne(comField, { foreignKey: 'dictionary_id' });

    const field = await sysField.findAll({
      include: [{
        model: comField,
        where: { company_id: companyInfo.id },
      }],
    });

问题

查询出来的结果为空

解决问题

在include中增加一行代码 required: false,

正确代码

const sysField = ctx.model.SysDictionary;
    const comField = ctx.model.CompanyDictionary;

    sysField.hasOne(comField, { foreignKey: 'dictionary_id' });

    const field = await sysField.findAll({
      include: [{
        model: comField,
        where: { company_id: companyInfo.id },
        required: false, // 解决问题的代码
      }],
    });