NestJS GraphQL 中 @ResolveField 的 @UseGuards

joh*_*kes 5 graphql nestjs

我想对 @ResolveField 使用 @UseGuards 功能,因为我希望主查询是公开的,但特定的内容仅对特定用户可见。我不想使用另一个查询或其他类型的防护。

joh*_*kes 12

刚刚发现了场解析器增强器:)

GraphQLModule.forRoot({
  fieldResolverEnhancers: ['guards'],
  ...
}

Run Code Online (Sandbox Code Playgroud)

=> 守卫也可以用于@ResolveFields :)

请记住,NestJS 中默认情况下不会设置此设置,因为使用 @ResolveFields 的 Guards 可能很危险。例如,如果同一个解析器有 5 个字段,并且使用 Guard 保护所有字段,则 Guard 将被调用 5 次:)