所以我的问题是尝试访问此类内的上下文。它总是返回未定义的。现在,我尝试在不使用dataSources
的情况下进行此工作,并且一切正常,但是一旦在dataSources
构造函数中引入了apolloServer
,就无法访问上下文。
这是我的apolloServer
构造函数
这是定义apolloServer
构造函数的地方
const server = new ApolloServer({
typeDefs,
resolvers,
dataSources: () => {
return {
usersApi: new UsersApi()
}
},
context:async({req,connection})=>{
if(connection){
return {
connection.context;
}
}else{
let user = req.user || "";
if(user){
let users = await Users.findOne({_id:req.user.id});
return {users}
}}
},
});
在注册后在这里让我的Resolver处理获取用户的详细信息
这是我的解析器之一,可以解析并从数据库中获取用户详细信息
signUp:async(_,args,{ dataSources})=>{
return dataSources.usersApi.addUsers(args);
}
这是我的课程来处理此数据源
这里,我定义了一个类,该类执行该函数,以在用户登录后返回usersDetails
,例如名称和电子邮件。
class UsersApi{
async getSignedUserDetails(){
if(!this.context.users){
throw new Error('Please signIn')
}
return await Users.find({_id:this.context.users.id});
}
}
如果我删除与上述类中其他函数中的上下文有关的任何内容,则它将起作用。 我看了一些资源,但还无法解决。感谢任何帮助。