Могу ли я получить доступ к заголовкам запросов в моем запросе graphql в гнезде js? - PullRequest
1 голос
/ 11 марта 2020

Я пытаюсь получить доступ к ip-адресу пользователя в запросе graphql. Но я не могу получить какую-либо информацию заголовка. Как я могу получить доступ к контексту, который я создаю на своей фабрике, в моих запросах 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;
  }
}

1 Ответ

0 голосов
/ 11 марта 2020

В соответствии с этим thread resolver context параметр должен содержать req, но это зависит [от конфигурации].

Resolvers обычно принимает (parent, args, context, info) аргументов - проверьте, определен ли контекст в твоем.

...