GraphQL Resolvers

Implementing resolver functions

Basic Resolver

const resolvers = {
    Query: {
        user: (parent, args, context, info) => {
            return getUserById(args.id);
        }
    }
}; # query resolver

Resolver Arguments

parent # result from parent resolver
args # query arguments
context # shared context (auth, database, etc.)
info # query info and schema

Mutation Resolver

const resolvers = {
    Mutation: {
        createUser: (parent, args, context) => {
            const user = new User(args);
            return user.save();
        }
    }
}; # mutation resolver

Field Resolver

const resolvers = {
    User: {
        posts: (parent) => {
            return getPostsByUserId(parent.id);
        }
    }
}; # resolve nested field

Async Resolver

const resolvers = {
    Query: {
        user: async (parent, args) => {
            const user = await User.findById(args.id);
            return user;
        }
    }
}; # async/await resolver

Context Usage

const resolvers = {
    Query: {
        me: (parent, args, context) => {
            if (!context.user) {
                throw new Error('Not authenticated');
            }
            return context.user;
        }
    }
}; # use context for auth