TypeORM select 列名的别名

TypeORM select alias of column name

this.sampleRepo.find(
  {
    order: {
      id: "DESC"
    },
    select: ['id','group']
  }
);

这 return 如预期的那样 idgroup,但是如何 return iduser_id? 以及如何 select 区分组中的值?

只需在 select 字符串中添加一个别名,例如:

select: ['id AS user_id','group AS user_group']

如果前面的选项不起作用,它应该在 queryBuilder 中起作用:

this.sampleRepo
      .createQueryBuilder('user')
      .orderBy('user.id', 'DESC')
      .select(['id AS user_id','group AS user_group'])
      .getRawMany() // or .getMany()


我已经用我的一个示例 (last one here) 制作了 smth,但写了这个 (更新。用 getRawMany 和 distinct 修复):

getMany(): Promise<UserEntity[]> {
    return this.userRepo.createQueryBuilder('user')
      .where({ username: 'breckhouse0' })
      .select(['DISTINCT (user.username) AS user_name', 'user.id AS user_id'])
      .getRawMany();
  }

这如您所愿 - results

我做了一个解决方法

var qb = this.siteSurveyRepository
        .createQueryBuilder('sites')
        .leftJoinAndSelect('sites.responsavel', 'responsavel')
        .leftJoinAndSelect('sites.endereco', 'endereco')
        .leftJoinAndSelect('sites.localizacao', 'localizacao')
        .leftJoinAndSelect('sites.fotos', 'fotos')
        .leftJoin('sites.contato', 'contato')
        .leftJoin('contato.empresa', 'empresa')
        .select([
          'sites.id',
          'sites.nome',
          'sites.esfera',
          'sites.poder',
          'sites.dataCriacao',
          'sites.dataCriacaoLocal',
          'responsavel',
          'endereco',
          'localizacao',
          'fotos.id',
          'fotos.idSurvey',
          'fotos.label',
          'fotos.src',
          'contato.id',
          'contato.nome',
          'contato.email',
          'contato.telefone',
          'empresa'
        ])
const all = qb.orderBy('sites.dataCriacao', 'ASC').getMany();
const result = JSON.stringify(all).replace('dataCriacao', 'data_criacao').replace('dataCriacaoLocal', 'data_criacao_local');
const data = JSON.parse(result);
return response.status(201).json(data);