首页 > 解决方案 > 如何同时访问解析器中的上下文和参数?

问题描述

这是我的 nestJS 应用程序中的解析器示例(使用 graphQL):

在第一个查询中,我正在访问上下文,在第二个查询中,我正在通过装饰器访问 args。

import { Args, Query, Resolver } from '@nestjs/graphql'

@Resolver('List')
export class ListResolvers {
  constructor(private readonly listService: ListService) {}

  @Query(() => [Data])
  async getList(obj, args, context) {
    const token = context.token
    return this.listService.getList(token)
  }

  @Query(() => [Data])
  async getList(
    @Args('param') param: GetListParam
  ): Promise<Array<Data>> {
    return this.listService.getList(param)
  }
}

但我确实需要同时通过:paramtoken:

return this.listService.searchList(param, token)

如何在第二个查询(使用@Args)中访问上下文?

标签: javascriptnestjs

解决方案


您可以使用此方法访问请求标头。首先在 app.module.ts 中的graphqlModule导入中添加上下文

imports: [
GraphQLModule.forRoot({ ..., context: ({req}) => ({req})})
]

然后在这样的graphql查询中使用上下文

 @Query(() => [Data])
  async getList(
    @Args('param') param: GetListParam,
    @Context('req') req
  ): Promise<Array<Data>> {
    const token = req.headers.authorization;
    return this.listService.getList(param)
  }

推荐阅读