javascript - 如何同时访问解析器中的上下文和参数?
问题描述
这是我的 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)
}
}
但我确实需要同时通过:param
和token
:
return this.listService.searchList(param, token)
如何在第二个查询(使用@Args
)中访问上下文?
解决方案
您可以使用此方法访问请求标头。首先在 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)
}
推荐阅读
- json - 如何解码嵌入的json?
- sql-server - 使用 Spark 在 SQL SERVER 数据库中使用 HIVE 中的数据更新表
- visual-studio-code - 如何在 VSCode 中为同时运行的两个不同 Python 脚本拆分终端
- json - JSON 到 powershell
- microsoft-cognitive - 由于转录参考,无法删除自定义语音模型
- javascript - 代码按我想要的方式工作,但出现“未捕获的类型错误”
- mongodb - Celery MongoClient 分叉前开启
- python - 一个 HTTP GET 请求返回 302,但位置标头与我最初传递的相同
- image - 9 Flutter 中的补丁替代方案?
- coldfusion - 带有大括号的 ColdFusion 变量 {}