如何在续集中将concat与别名模型一起使用

时间:2019-12-04 17:31:32

标签: node.js postgresql typescript sequelize.js nestjs

我正在尝试根据模型的3个属性的串联进行搜索 为此,我使用了concat函数,但是由于我的模型具有多个关系,因此我不得不为我的模型使用别名,但是在列出结果时,我总是会遇到以下错误:

错误: an entry for the "cliente" table is missing in the clause

堆栈:

  • NestJS:^ 6.0.0
  • Sequelize-Typescript:^ 0.6.11
  • Postgresql:11

我的查询:

async search(criterio: string) {
try {
    let querybase: IFindOptions < Bill > ;
    const wheres: any = [];
    querybase = {
        include: [{
            model: Persona,
            as: 'cliente',
        }],
    }
    const wheres = [];
    if (criterio != null) {
        const arrayCriterio = [{
            [Op.or]: [
                Sequelize.where(
                    Sequelize.fn('concat', Sequelize.col('cliente.apellido_paterno'), ' ', Sequelize.col('cliente.apellido_materno'), ' ', Sequelize.col('cliente.nombre')), {
                        [Op.iLike]: `%${criterio}%`,
                    },
                ),
                Sequelize.where(
                    Sequelize.fn('concat', Sequelize.col('cliente.apellido_paterno'), ' ', Sequelize.col('cliente.nombre'), ' ', Sequelize.col('cliente.apellido_materno')), {
                        [Op.iLike]: `%${criterio}%`,
                    },
                ),
                Sequelize.where(
                    Sequelize.fn('concat', Sequelize.col('cliente.apellido_materno'), ' ', Sequelize.col('cliente.apellido_paterno'), ' ', Sequelize.col('cliente.nombre')), {
                        [Op.iLike]: `%${criterio}%`,
                    },
                ),
                Sequelize.where(
                    Sequelize.fn('concat', Sequelize.col('cliente.apellido_materno'), ' ', Sequelize.col('cliente.nombre'), ' ', Sequelize.col('cliente.apellido_paterno')), {
                        [Op.iLike]: `%${criterio}%`,
                    },
                ),
                Sequelize.where(
                    Sequelize.fn('concat', Sequelize.col('cliente.nombre'), ' ', Sequelize.col('cliente.apellido_materno'), ' ', Sequelize.col('cliente.apellido_paterno')), {
                        [Op.iLike]: `%${criterio}%`,
                    },
                ),
                Sequelize.where(
                    Sequelize.fn('concat', Sequelize.col('cliente.nombre'), ' ', Sequelize.col('cliente.apellido_paterno'), ' ', Sequelize.col('cliente.apellido_materno')), {
                        [Op.iLike]: `%${criterio}%`,
                    },
                ),
            ],
        }, ];
        wheres.push(arrayCriterio);
    }
    querybase.where = {
        [Op.and]: wheres,
    };
    const clientes = await this.bill.findAll(querybase);
    return clientes;      
} catch (error) {
    return error;
}

}

0 个答案:

没有答案