无法在已定义的类和数据源中访问this.context apollo-server-express

时间:2020-10-26 18:53:37

标签: node.js express graphql apollo-server graphql-js

所以我的问题是尝试访问此类内的上下文。它总是返回未定义的。现在,我尝试在不使用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});
    }
}

如果我删除与上述类中其他函数中的上下文有关的任何内容,则它将起作用。 我看了一些资源,但还无法解决。感谢任何帮助。

0 个答案:

没有答案