【发布时间】:2021-08-08 05:49:50
【问题描述】:
我正在使用 type-graphql 创建一个 GraphQL 端点,它还定义了一个订阅。在订阅中,我返回一个包含 currentUser 属性的对象。这就是我创建服务器的方式:
const server = new ApolloServer({ schema, context: (ctx) => {
if(ctx.connection) {
console.log(`Inside Connection`);
//console.log(ctx.connection.context); - I can see currentUser property with an actual user
let obj = {
req: ctx.req,
currentUser: ctx.connection.context.currentUser
};
console.log(obj);
return obj;
}
return {
req: ctx.req
}
},
subscriptions: {
path: "/subscriptions",
onConnect: async (connectionParams: any) => {
const token = connectionParams["X-JWT"];
if(token) {
const user = await decodeJWT(token);
if(user) {
return {
currentUser: user
}
}
}
throw new Error("Not Authorised to Subscribe...");
},
onDisconnect: () => {
console.log("Client disconnected from subscriptions");
}
}
});
当我创建解析器并打印上下文时,我无法在上下文中看到 currentUser 属性。
@Resolver()
export class UserResolver {
@Query(_returns => String)
async returnHello(@Arg("name") name: string, @Ctx() _ctx: any){
// console.log("connection")
console.log(_ctx); // Unable to get currentUser property here
return `Hello ${name}`;
};
}
我遵循link 并以类似的方式实现代码。但我仍然没有在解析器的上下文中获取 currentUser 属性。
请帮忙。提前致谢。
【问题讨论】:
标签: typegraphql