Node.js 在GraphQLServer中使用身份验证和PubSub的正确方法
我正在尝试使用GraphQL服务器上的订阅。我面临的问题是,在初始化GraphQLServer时,我不能同时使用中间件来提取JWT和PubSub 这就是我所拥有的:Node.js 在GraphQLServer中使用身份验证和PubSub的正确方法,node.js,typescript,graphql,typegraphql,Node.js,Typescript,Graphql,Typegraphql,我正在尝试使用GraphQL服务器上的订阅。我面临的问题是,在初始化GraphQLServer时,我不能同时使用中间件来提取JWT和PubSub 这就是我所拥有的: const server=new GraphQLServer({ 模式, 上下文:({request})=>extractJWT(请求), }); 它可以很好地处理这个问题: @Mutation(returns => User) public async findUser( @Ctx() contex
const server=new GraphQLServer({
模式,
上下文:({request})=>extractJWT(请求),
});
它可以很好地处理这个问题:
@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
}
但是,如果我在GraphQLServer初始化上下文中注册PubSub并将代码更改为下面的代码,我将无法再访问@Ctx decorators中的内容
const pubSub = new PubSub();
const server = new GraphQLServer({
schema,
context: {
ctx: ({request}) => extractJWT(request),
pubSub
},
});
使用JWT提取中间件和PubSub初始化GraphQLServer的正确方法是什么