TypeORM select 列名的别名
TypeORM select alias of column name
this.sampleRepo.find(
{
order: {
id: "DESC"
},
select: ['id','group']
}
);
这 return 如预期的那样 id
和 group
,但是如何 return id
为 user_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);
this.sampleRepo.find(
{
order: {
id: "DESC"
},
select: ['id','group']
}
);
这 return 如预期的那样 id
和 group
,但是如何 return id
为 user_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);