Правильный способ проверки подлинности и PubSub на GraphQLServer

#node.js #typescript #graphql #typegraphql

#node.js #typescript #graphql #typegraphql

Вопрос:

Я пытаюсь использовать подписки на моем сервере 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?