0
0
NestJSframework~20 mins

Object types and input types in NestJS - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
NestJS Object & Input Types Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What is the output of this NestJS GraphQL resolver with object types?
Consider this NestJS GraphQL resolver code snippet. What will be the output when the getUser query is called with id: 1?
NestJS
import { Resolver, Query, Args, ObjectType, Field, Int } from '@nestjs/graphql';

@ObjectType()
class User {
  @Field(type => Int)
  id: number;

  @Field()
  name: string;
}

@Resolver(of => User)
export class UserResolver {
  private users = [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }];

  @Query(returns => User, { nullable: true })
  getUser(@Args('id', { type: () => Int }) id: number): User | undefined {
    return this.users.find(user => user.id === id);
  }
}
AGraphQL error: Field 'getUser' is missing a resolver
B{ "data": { "getUser": { "id": 1, "name": "Alice" } } }
C{ "data": { "getUser": null } }
DSyntaxError: Unexpected token in resolver
Attempts:
2 left
💡 Hint
Think about how the resolver finds the user by id and returns the matching object.
📝 Syntax
intermediate
2:00remaining
Which option correctly defines an input type for NestJS GraphQL mutation?
You want to create an input type for a mutation to create a new user with name and age. Which option is syntactically correct?
A
@ObjectType()
class CreateUserInput {
  @Field()
  name: string;

  @Field(type => Int)
  age: number;
}
B
@InputType
class CreateUserInput {
  @Field()
  name: string;

  @Field(type => Int)
  age: number;
}
C
class CreateUserInput {
  @Field()
  name: string;

  @Field(type => Int)
  age: number;
}
D
@InputType()
class CreateUserInput {
  @Field()
  name: string;

  @Field(type => Int)
  age: number;
}
Attempts:
2 left
💡 Hint
Input types must use the @InputType decorator with parentheses.
🔧 Debug
advanced
2:00remaining
What error does this NestJS GraphQL input type cause?
Given this input type code, what error will occur when running the NestJS app?
NestJS
import { InputType, Field } from '@nestjs/graphql';

@InputType()
export class UpdateUserInput {
  @Field()
  name: string;

  age: number;
}
ASyntaxError: Unexpected token 'age'
BNo error, code runs fine
CError: Field 'age' is missing @Field decorator
DTypeError: Cannot read property 'name' of undefined
Attempts:
2 left
💡 Hint
All fields in input types must have @Field decorator to be exposed in GraphQL schema.
state_output
advanced
2:00remaining
What is the value of the input object in this NestJS mutation resolver?
In this mutation resolver, what is the value of the input parameter when the mutation is called with { "name": "Eve", "age": 30 }?
NestJS
import { Resolver, Mutation, Args, InputType, Field, Int } from '@nestjs/graphql';

@InputType()
class CreateUserInput {
  @Field()
  name: string;

  @Field(type => Int)
  age: number;
}

@Resolver()
export class UserResolver {
  @Mutation(returns => Boolean)
  async createUser(@Args('input') input: CreateUserInput): Promise<boolean> {
    console.log(input);
    return true;
  }
}
A{ name: 'Eve', age: 30 }
B{ input: { name: 'Eve', age: 30 } }
Cundefined
DError: Argument 'input' not found
Attempts:
2 left
💡 Hint
The @Args decorator extracts the input object directly.
🧠 Conceptual
expert
2:00remaining
Which statement about NestJS GraphQL object and input types is correct?
Select the correct statement about the difference between object types and input types in NestJS GraphQL.
AObject types define the shape of data returned by queries and mutations, while input types define the shape of data accepted as arguments.
BInput types can be used as return types for queries, but object types cannot be used as input arguments.
CBoth object types and input types must use the @ObjectType decorator in NestJS GraphQL.
DInput types automatically inherit all fields from object types without extra code.
Attempts:
2 left
💡 Hint
Think about the purpose of input types versus object types in GraphQL.