NestJS 如何在同一请求中传递@Param 和@Query

NestJS how to pass @Param and @Query in same request

我设置了这条路线:

  @Get('/name/like')
  findByLikeName(@Query() query: { supplierID: string; name: string }) {
    return this.supplierProductService.findByLikeName(query);
  }

利用底层服务中的查询参数:

  async findByLikeName({
    supplierID,
    name,
  }: {
    supplierID: string;
    name: string;
  }): Promise<SupplierProduct[]> {
    return await this.supplierProductRepository.findAll({
      where: {
        name: {
          [Op.like]: `%${name}%`,
        },
        supplierID: supplierID,
      },
    });
  }

但是,假设我想将 supplierID 移动到 /:supplierID 路由参数中,同时在查询对象中维护名称(和其他潜在的查询参数),我将如何实现它?

你已经差不多明白了。您需要做的就是设置 @Get() 路由以了解它正在使用 URL 参数并执行以下操作:

  @Get('/name/like/:supplierID')
  findByLikeName(
    @Query() query: { name: string },
    @Param() param: { supplierID: string }
  ) {
    return this.supplierProductService.findByLikeName({...query, ...param});
  }