GraphQL + NestJS - 如何在守卫中访问@Args?

h4s*_*sop 6 args guard graphql nestjs

我需要以某种方式objectId@Args警卫内部访问,以便检查发件人是否已objectId分配给他的帐户。知道我如何实现它吗?

 @Query(() => [Person])
      @UseGuards(ObjectMatch)
      async pplWithObject(@Args('objectId') id: string): Promise<Person[]> {
        return await this.objService.getPeopleWithObject(id);
      }
Run Code Online (Sandbox Code Playgroud)

是否可以从上下文访问传递的参数?

const ctx = GqlExecutionContext.create(context);
    const request = ctx.getContext().req;
Run Code Online (Sandbox Code Playgroud)

Nat*_*tch 8

您可以使用 GqlExecutionContext 来执行它,例如:

const ctx = GqlExecutionContext.create(context);
console.log(ctx.getArgs()) // object with your query args
ctx.getArgs()['objectId']
Run Code Online (Sandbox Code Playgroud)

@nestjs/graphql 版本:^7.6.0