繁体   English   中英

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

[英]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.

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