我正在尝试在我的 GraphQL 服务器上使用订阅。我面临的问题是,在初始化 GraphQLServer 时,我不能同时使用中间件来提取我的 JWT 和 PubSub。
这就是我所拥有的:
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
}
但是,如果我在 GraphQLServer 初始化上下文中注册 PubSub 并将我的代码更改为下面的代码,我将无法再访问我的 @Ctx 装饰器中的内容。
const pubSub = new PubSub();
const server = new GraphQLServer({
schema,
context: {
ctx: ({request}) => extractJWT(request),
pubSub
},
});
使用 JWT 提取中间件和 PubSub 初始化我的 GraphQLServer 的正确方法是什么?