[英]How do I return only the required nested field in NestJs?
我正在尝试从嵌套表中获取一条记录。
controller:
@Get(':id/type')
async getType(): Promise<User[]> {
return this.userService.findType();
};
服务:
async findType(id: FindOptionsWhere<number>): Promise<User[]> {
return this.userRepository.find({
select: [""], //here I want to select type.type_name
where: {user_id: id}
});
}
实体:
@Entity({ name: 'user' })
export class User {
@PrimaryGeneratedColumn()
public user_id: number;
@OneToOne(() => Type)
@JoinColumn({ name: "type_id", referencedColumnName: "type_id" })
public type: Type;
@Column({ nullable: true, name: 'test_id', type: 'int' })
public test_id: number;
表用户:user_id|type_id|test_id
表类型:type_id|type_name|type_adr
如何仅检索 url /:id/type 中的 type.type_name? 谢谢
首先,您必须修复一些细节,例如您的路线 (id) 中的参数。 所以利用你的前任。
我将按照惯例修改路线的顺序。
// Controller
@Get('type/:id')
async getType(@Param('id') id: string): Promise<User[]> {
return this.userService.findType();
};
// 服务
async findType(id: string): Promise<User[]> {
return this.userRepository.find({
select: { type: true },
where: { user_id: id }
});
}
// 并使用 QueryBuilder
findType(id: string) {
return this.createQueryBuilder('user')
.select(['user.type'])
.where('user.user_id = :id', { id })
.getMany(); // or .getRawMany() to get the raw type
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.