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});
}
我设置了这条路线:
@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});
}