简体   繁体   English

如何在 NestJs 中只返回所需的嵌套字段?

[英]How do I return only the required nested field in NestJs?

I'm trying to get one record from a nested table.我正在尝试从嵌套表中获取一条记录。

controller: controller:

@Get(':id/type')
  async getType(): Promise<User[]> {
      return this.userService.findType();
  };

service:服务:

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:实体:

@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;

table user: user_id|type_id|test_id表用户:user_id|type_id|test_id

table type: type_id|type_name|type_adr表类型:type_id|type_name|type_adr

How can I retrieve only type.type_name in the url /:id/type?如何仅检索 url /:id/type 中的 type.type_name? thanks谢谢

First you have to fix some details, like the param in your route (id).首先,您必须修复一些细节,例如您的路线 (id) 中的参数。 So using your ex.所以利用你的前任。

I'll going to modify the order of the route by convention.我将按照惯例修改路线的顺序。

// Controller // Controller

@Get('type/:id')
  async getType(@Param('id') id: string): Promise<User[]> {
      return this.userService.findType();
  };

// Service // 服务

async findType(id: string): Promise<User[]> {
return this.userRepository.find({
    select: { type: true },
    where: { user_id: id }
  });
}

// And using QueryBuilder // 并使用 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM