我正在尝试在graphql的查询中访问用户的ip地址。但是我无法到达任何标题信息。如何在我的graphql请求中访问在工厂中创建的上下文?
// app.module.ts
...
@Module({
imports: [
ConfigModule,
GraphQLModule.forRootAsync({
imports: [
LanguageModule,
SearchModule],
inject: [ConfigService],
useFactory: () => ({
autoSchemaFile: 'schema.gql',
debug: true,
fieldResolverEnhancers: ['guards'],
formatError: (error: GraphQLError): GraphQLFormattedError => {
return error.originalError instanceof BaseException
? error.originalError.serialize()
: error;
},
context: ({ req }): object => {
console.log("req.ip: ", req.ip); // Here I have the ip
return { req };
},
}),
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
// search.resolver.ts
...
@Resolver(() => Search)
export class SearchResolver {
constructor(private readonly service: service) {}
@Query(() => Search)
async search(@Args() args: SearchArgs): Promise<Search> {
// I want the ip here, I want to send it as an argument into the query function below
const response = await this.service.query(args.query, {
language: args.language,
});
return response;
}
}
根据此thread解析器context
参数应包含req
,但它取决于[取决于配置]。
解析器通常采用(parent, args, context, info)
参数-检查上下文是否在您的上下文中定义。