Правильный способ аутентификации и PubSub в GraphQLServer - PullRequest
1 голос
/ 14 апреля 2019

Я пытаюсь использовать подписки на моем сервере GraphQL.Проблема, с которой я сталкиваюсь, заключается в том, что у меня не может быть и промежуточного программного обеспечения для извлечения JWT, и PubSub при инициализации GraphQLServer.

Вот что у меня есть:

const server = new GraphQLServer({
    schema,
    context: ({request}) => extractJWT(request),
  });

Иэто прекрасно работает с этим:

@Mutation(returns => User)
    public async findUser(
        @Ctx() context: IContext,
        @PubSub() pubsub: PubSubEngine,
    ) {
        const user = await User.findById(context.tokenData.userId)
        pubsub.publish('user', { user })
        return user
    }

Но если я зарегистрирую PubSub в контексте инициализации GraphQLServer и изменим свой код на приведенный ниже, я больше не смогу получить доступ к тому, что есть в моем @Ctxдекораторы.

const pubSub = new PubSub();
const server = new GraphQLServer({
    schema,
    context: {
       ctx: ({request}) => extractJWT(request),
       pubSub
  },
  });

Как правильно инициализировать мой GraphQLServer с использованием промежуточного программного обеспечения для извлечения JWT и PubSub?

...