Bird
Raised Fist0
GraphQLquery~20 mins

Context setup in GraphQL - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
GraphQL Context Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
What is the purpose of context in GraphQL?

In GraphQL, what is the main role of the context object during query execution?

AIt caches query results to improve performance automatically.
BIt defines the schema types and fields for the GraphQL server.
CIt stores shared data like authentication info accessible to all resolvers during a request.
DIt handles client-side state management for UI components.
Attempts:
2 left
💡 Hint

Think about what data resolvers need to share during a single request.

❓ query_result
intermediate
2:00remaining
What is the output when accessing context in a resolver?

Given this resolver snippet, what will be the value of userId?

const resolvers = {
  Query: {
    currentUser: (parent, args, context) => {
      return context.userId;
    }
  }
};

// Context setup:
const context = { userId: 42 };
Anull
B42
CThrows an error
Dundefined
Attempts:
2 left
💡 Hint

Look at what the context object contains and what the resolver returns.

📝 Syntax
advanced
2:00remaining
Identify the syntax error in context setup

Which option contains a syntax error in setting up the GraphQL context function?

const server = new ApolloServer({
  typeDefs,
  resolvers,
  context: ???
});
A{ user: getUser() }
B() => { return { user: getUser() }; }
Ccontext() { return { user: getUser() }; }
Dasync () => { const user = await getUser(); return { user }; }
Attempts:
2 left
💡 Hint

The context option expects a function, not a plain object.

❓ optimization
advanced
2:00remaining
Best practice for expensive context data

You want to add a database connection to the context for each request. Which approach is best to avoid performance issues?

ACreate a new database connection inside the context function for every request.
BReuse a single global database connection shared across all requests in the context.
CCreate a new database connection inside each resolver instead of context.
DCreate a new database connection once and store it in a global variable, then use it in context.
Attempts:
2 left
💡 Hint

Think about connection overhead and sharing resources safely.

🔧 Debug
expert
2:00remaining
Why does context data not appear in resolvers?

You set up context as context: () => ({ user: null }). But in resolvers, context.user is always undefined. What is the cause?

AThe resolver signature is missing the context parameter.
BThe context function is not called because it is missing parentheses in the server setup.
CThe context function is asynchronous but not awaited, causing <code>undefined</code> values.
DThe context function returns an object with <code>user</code> set to null, so <code>undefined</code> is impossible.
Attempts:
2 left
💡 Hint

Check how the resolver accesses context.

Practice

(1/5)
1. What is the main purpose of the context in a GraphQL server?
easy
A. To share data like user info or database clients across all resolvers
B. To define the GraphQL schema types
C. To write the query resolvers
D. To format the GraphQL query response

Solution

  1. Step 1: Understand what context provides

    Context is an object that runs once per request and is accessible in every resolver, allowing shared data like user info or database clients.
  2. Step 2: Compare with other options

    Defining schema types, writing resolvers, and formatting responses are separate tasks not handled by context.
  3. Final Answer:

    To share data like user info or database clients across all resolvers -> Option A
  4. Quick Check:

    Context shares data across resolvers [OK]
Hint: Context shares common data across resolvers per request [OK]
Common Mistakes:
  • Confusing context with schema definition
  • Thinking context formats responses
  • Assuming context writes resolver logic
2. Which of the following is the correct way to define a context function in Apollo Server?
easy
A. context = { user: getUser() }
B. context: () => ({ user: getUser() })
C. context: { user: getUser() }
D. context() { return user: getUser() }

Solution

  1. Step 1: Recall Apollo Server context syntax

    Context is defined as a function returning an object, e.g., context: () => ({ user: getUser() }).
  2. Step 2: Identify syntax errors in other options

    context = { user: getUser() } uses assignment instead of a function, C uses an object directly without a function, and D has invalid syntax missing parentheses and braces.
  3. Final Answer:

    context: () => ({ user: getUser() }) -> Option B
  4. Quick Check:

    Context is a function returning an object [OK]
Hint: Context must be a function returning an object [OK]
Common Mistakes:
  • Defining context as a plain object
  • Missing parentheses in function syntax
  • Using assignment instead of property
3. Given this context setup in Apollo Server:
context: () => ({ user: { id: 5, name: 'Alice' } })

What will be the value of context.user.name inside a resolver?
medium
A. undefined
B. 5
C. null
D. 'Alice'

Solution

  1. Step 1: Analyze the context object

    The context function returns an object with a user property containing { id: 5, name: 'Alice' }.
  2. Step 2: Access user.name in resolver

    Accessing context.user.name will give the string 'Alice' as defined.
  3. Final Answer:

    'Alice' -> Option D
  4. Quick Check:

    context.user.name = 'Alice' [OK]
Hint: Context returns user object; access properties directly [OK]
Common Mistakes:
  • Confusing user id with name
  • Assuming context is undefined
  • Expecting null instead of string
4. You wrote this context function:
context: () => { user: getUser() }

Why does context.user return undefined in resolvers?
medium
A. Because user is not a valid property
B. Because getUser() is undefined
C. Because the function does not return the object explicitly
D. Because context must be an object, not a function

Solution

  1. Step 1: Check function return behavior

    The function uses curly braces but lacks a return statement, so it returns undefined by default.
  2. Step 2: Understand impact on context

    Since nothing is returned, context.user is undefined in resolvers.
  3. Final Answer:

    Because the function does not return the object explicitly -> Option C
  4. Quick Check:

    Missing return in function = undefined context [OK]
Hint: Use return or parentheses to return object in arrow function [OK]
Common Mistakes:
  • Omitting return in arrow function with braces
  • Assuming getUser() is undefined without checking
  • Thinking context must be an object, not function
5. You want to add a database client and user info to context for each request. Which is the best way to do this in Apollo Server?
hard
A. context: async () => { const db = await connectDB(); const user = await getUser(); return { db, user }; }
B. context: { db: connectDB(), user: getUser() }
C. context: () => { db: connectDB(); user: getUser(); }
D. context: () => ({ db: connectDB(), user: getUser() })

Solution

  1. Step 1: Understand async context needs

    Connecting to a database and fetching user info are asynchronous operations, so context must be async and await these calls.
  2. Step 2: Evaluate options for async correctness

    context: async () => { const db = await connectDB(); const user = await getUser(); return { db, user }; } correctly uses async function and awaits results before returning an object. context: { db: connectDB(), user: getUser() } is a plain object, not a function. context: () => { db: connectDB(); user: getUser(); } lacks return and awaits. context: () => ({ db: connectDB(), user: getUser() }) returns an object but does not await async calls.
  3. Final Answer:

    context: async () => { const db = await connectDB(); const user = await getUser(); return { db, user }; } -> Option A
  4. Quick Check:

    Async context with awaited data [OK]
Hint: Use async function and await for async data in context [OK]
Common Mistakes:
  • Not awaiting async calls in context
  • Using plain object instead of function
  • Missing return statement in function
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard