执行查询时,我在 typeorm 的相关表中获取对象而不是字段 [英] When performing query I get object instead of field, in related table in typeorm

查看:30
本文介绍了执行查询时,我在 typeorm 的相关表中获取对象而不是字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这些是我的表格:

@Entity('localidades')
export class Localidades {

    @PrimaryGeneratedColumn()
    id: number;

    @Column({type:"varchar",length:100})
    nombre: string;

    @ManyToOne(type => Provincias)
    @JoinColumn({name: "idprovincia"})
    provincia: string;
    
}

@Entity('provincias')
export class Provincias {

    @PrimaryGeneratedColumn()
    id: number;

    @Column({type:"varchar",length:100})
    nombre: string;
    
}

这是我的查询:

 return await this.repository.createQueryBuilder("localidades")
    .select('localidades')
    .addSelect('provincias.nombre')
    .leftJoin('localidades.provincia','provincias')
    .getMany();

得到的结果:

    {
        "id": 1,
        "nombre": "Ciudad 1",
        "provincia": {
            "nombre": "Provincia 1"
        }
    }

预期结果:

    {
        "id": 1,
        "nombre": "Ciudad 1",
        "provincia": "Provincia 1"
    }

我需要将省作为字段而不是对象返回.

I need province to be returned as a field and not as an object.

您的意见将不胜感激.非常感谢.

Your comments will be appreciated. Thank you very much.

推荐答案

试试这样:

return await this.repository.createQueryBuilder("localidades")
    .select('localidades')
    .addSelect('provincias.nombre')
    .leftJoin('localidades.provincia','provincias')
    .addSelect('provincias.nombre AS localidades_provincia') // select with alias
    .getRawMany();


更新:


UPD:

return await this.repository.createQueryBuilder("localidades")
    .leftJoin('localidades.provincia','provincias')
    .select([
      'localidades.id AS localidades_id',
      'localidades.nombre AS localidades_nombre',
      'provincias.nombre AS localidades_idprovincia',
      'provincias.nombre AS localidades_provincia'
    ]).getRawMany();

这篇关于执行查询时,我在 typeorm 的相关表中获取对象而不是字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆