this.sampleRepo.find(
{
order: {
id: "DESC"
},
select: ['id','group']
}
);
this returns the id and group as expected, but how to return id as user_id ?
and also how to select distinct values from group?
Just add an alias in you select string, e.g.:
select: ['id AS user_id','group AS user_group']
If the previous option didn't work, it should work in queryBuilder:
this.sampleRepo
.createQueryBuilder('user')
.orderBy('user.id', 'DESC')
.select(['id AS user_id','group AS user_group'])
.getRawMany() // or .getMany()
I've made smth as you need with one of my examples (last one here) but wrote this (upd. fixed with getRawMany and 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();
}
and this works as you expect - results
I made a gambiarra:
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);