0
0
GraphQLquery~10 mins

One-to-one relationships in GraphQL - Step-by-Step Execution

Choose your learning style9 modes available
Concept Flow - One-to-one relationships
Define Type A
Define Type B
Add field in Type A referencing Type B
Add field in Type B referencing Type A
Query Type A with linked Type B
Return combined data from both types
This flow shows how two GraphQL types are linked one-to-one by referencing each other, then queried together.
Execution Sample
GraphQL
type User {
  id: ID!
  profile: Profile
}

type Profile {
  id: ID!
  user: User
}

query {
  user(id: "1") {
    id
    profile {
      id
    }
  }
}
Defines User and Profile types linked one-to-one, then queries a user with their profile.
Execution Table
StepActionEvaluationResult
1Define User type with profile fieldUser has profile field of type ProfileUser and Profile types linked
2Define Profile type with user fieldProfile has user field of type UserBidirectional link established
3Query user with id '1'Find user with id '1'User object found
4Resolve profile field for userFetch profile linked to user '1'Profile object with id '101' found
5Return user data with profile idCombine user and profile data{ user: { id: "1", profile: { id: "101" } } }
6End of query executionAll requested fields resolvedQuery complete
💡 Query ends after all requested fields are resolved and data returned
Variable Tracker
VariableStartAfter Step 3After Step 4Final
userundefined{ id: "1" }{ id: "1", profile: { id: "101" } }{ id: "1", profile: { id: "101" } }
profileundefinedundefined{ id: "101" }{ id: "101" }
Key Moments - 2 Insights
Why do both User and Profile types reference each other?
Because in a one-to-one relationship, each side holds a reference to the other to allow querying from either type, as shown in execution_table steps 1 and 2.
What happens if the profile field is missing for a user?
The profile field would be null or undefined in the result, meaning no linked profile exists, as would be seen if step 4 returned no profile.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of 'profile' after step 4?
A{ id: '101' }
Bundefined
C{ id: '1' }
Dnull
💡 Hint
Check the 'profile' variable value in variable_tracker after step 4
At which step is the user with id '1' found?
AStep 2
BStep 4
CStep 3
DStep 5
💡 Hint
Look at the 'Action' and 'Evaluation' columns in execution_table for user lookup
If the profile field was removed from User type, what would happen in the query?
AQuery would fail at step 3
BProfile data would not be returned
CUser data would be missing
DQuery would return an error at step 5
💡 Hint
Consider how the profile field is resolved in step 4 and returned in step 5
Concept Snapshot
One-to-one relationships in GraphQL:
- Define two types referencing each other
- Each type has a field linking to the other
- Query one type and include the linked type's fields
- Result returns combined data from both linked types
- Enables easy navigation between related single objects
Full Transcript
This visual execution shows how one-to-one relationships work in GraphQL. First, two types, User and Profile, are defined with fields referencing each other. This creates a bidirectional link. Then a query requests a user by id and includes the user's profile data. The execution steps find the user, then resolve the linked profile, and finally return combined data. Variables track the user and profile objects as they are fetched. Key moments clarify why both types reference each other and what happens if linked data is missing. Quiz questions test understanding of variable values and query steps. The snapshot summarizes the key points for quick reference.