如何在graphql中将装饰器添加到args参数

Posted

技术标签:

【中文标题】如何在graphql中将装饰器添加到args参数【英文标题】:How to add decorator to args param in graphql 【发布时间】:2021-12-24 19:44:45 【问题描述】:

无法将装饰器 @IsUUID()class-validator 添加到我的参数 productI,我不想使用额外的 dto。如何解决?

@UseGuards(new AuthGuard(['user', 'admin']))
@Mutation(() => ProductEntity)
async updateProduct(
  @User() user,
  @Args('productId', )
  //@IsUUID() Unable to resolve signature of parameter decorator when called as an expression.
  productId: string,
  @Args('inputs', )
  inputs: UpdateProductInputDto,
): Promise<ProductEntity> 
  return this.productService.updateProduct(user.id, productId, inputs);

【问题讨论】:

【参考方案1】:

没有办法解决它。如果您想使用 @IsUUID()ValidationPipe,您必须使用类 DTO。如果你只是想验证UUID,你可以使用ParseUUIDPipe@Args('productId', , new ParseUUIDPipe( version: 4 ))

【讨论】:

以上是关于如何在graphql中将装饰器添加到args参数的主要内容,如果未能解决你的问题,请参考以下文章

装饰器 装饰带参数的函数和添加函数

在 GraphQL 中将参数从根传递到子查询

Python进阶精华-编写装饰器为被包装的函数添加参数

使用自定义类型的 TypeGraphql 字段和 Arg 装饰器

如何编写一个装饰器来在上下文管理器中包装一些东西,它需要参数?

Python装饰器