Bird
Raised Fist0
NestJSframework~10 mins

Default value pipe in NestJS - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to import the DefaultValuePipe from NestJS.

NestJS
import { [1] } from '@nestjs/common';
Drag options to blanks, or click blank then click option'
AValidationPipe
BParseIntPipe
CDefaultValuePipe
DUsePipes
Attempts:
3 left
💡 Hint
Common Mistakes
Importing the wrong pipe like ValidationPipe or ParseIntPipe.
Forgetting to import the pipe.
2fill in blank
medium

Complete the code to apply DefaultValuePipe with a default value of 'guest' to the 'username' query parameter.

NestJS
@Query('username', new [1]('guest')) username: string
Drag options to blanks, or click blank then click option'
ADefaultValuePipe
BValidationPipe
CParseBoolPipe
DParseIntPipe
Attempts:
3 left
💡 Hint
Common Mistakes
Using ParseIntPipe or ValidationPipe instead of DefaultValuePipe.
Not passing the default value as a constructor argument.
3fill in blank
hard

Fix the error in the code to correctly use DefaultValuePipe with a default value of 10 for the 'limit' query parameter.

NestJS
@Query('limit', new [1](10)) limit: number
Drag options to blanks, or click blank then click option'
AParseBoolPipe
BValidationPipe
CParseArrayPipe
DDefaultValuePipe
Attempts:
3 left
💡 Hint
Common Mistakes
Using pipes that do not accept default values like ParseBoolPipe.
Not wrapping the pipe with 'new'.
4fill in blank
hard

Fill both blanks to create a controller method that uses DefaultValuePipe to set a default page number of 1 and a default page size of 20.

NestJS
getItems(@Query('page', new [1](1)) page: number, @Query('size', new [2](20)) size: number) { return { page, size }; }
Drag options to blanks, or click blank then click option'
ADefaultValuePipe
BParseIntPipe
CValidationPipe
DParseBoolPipe
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing different pipes for the two parameters.
Using pipes that do not accept default values.
5fill in blank
hard

Fill all three blanks to create a controller method that uses DefaultValuePipe and ParseIntPipe to set default values and parse integers for 'page', 'size', and 'sortOrder' query parameters.

NestJS
getData(@Query('page', new [1](1), new [2]()) page: number, @Query('size', new [3](10), new ParseIntPipe()) size: number, @Query('sortOrder', new DefaultValuePipe('asc')) sortOrder: string) { return { page, size, sortOrder }; }
Drag options to blanks, or click blank then click option'
ADefaultValuePipe
BParseIntPipe
CValidationPipe
DParseBoolPipe
Attempts:
3 left
💡 Hint
Common Mistakes
Using ParseIntPipe before DefaultValuePipe.
Not using DefaultValuePipe for default values.
Using ValidationPipe instead of ParseIntPipe.

Practice

(1/5)
1. What is the main purpose of the DefaultValuePipe in NestJS?
easy
A. To provide a fallback value when a request parameter is missing
B. To validate the type of a request parameter
C. To transform a string into a number
D. To throw an error if a parameter is missing

Solution

  1. Step 1: Understand the role of DefaultValuePipe

    The DefaultValuePipe is used to supply a default value when the expected input is not provided in the request.
  2. Step 2: Compare with other pipe functions

    Unlike validation or transformation pipes, DefaultValuePipe does not validate or convert but only sets a fallback value.
  3. Final Answer:

    To provide a fallback value when a request parameter is missing -> Option A
  4. Quick Check:

    DefaultValuePipe = fallback value [OK]
Hint: DefaultValuePipe sets fallback for missing inputs [OK]
Common Mistakes:
  • Confusing DefaultValuePipe with validation pipes
  • Thinking it throws errors on missing params
  • Assuming it transforms data types
2. Which of the following is the correct way to use DefaultValuePipe to set a default value of 10 for a query parameter named page?
easy
A. @Query('page', new DefaultValuePipe(10)) page: number
B. @Query('page', DefaultValuePipe(10)) page: number
C. @Query('page', DefaultValuePipe) page: number = 10
D. @Query('page', new DefaultValuePipe) page: number = 10

Solution

  1. Step 1: Check the syntax for using pipes in NestJS

    Pipes are instantiated with the new keyword and passed as the second argument to decorators like @Query.
  2. Step 2: Confirm the correct usage of DefaultValuePipe

    The DefaultValuePipe requires a value in its constructor, so new DefaultValuePipe(10) is correct.
  3. Final Answer:

    @Query('page', new DefaultValuePipe(10)) page: number -> Option A
  4. Quick Check:

    Use new DefaultValuePipe(value) with decorator [OK]
Hint: Always use 'new' to instantiate DefaultValuePipe [OK]
Common Mistakes:
  • Omitting 'new' keyword when creating the pipe
  • Passing DefaultValuePipe without parentheses
  • Assigning default value directly in parameter without pipe
3. Given the following controller method, what will be the value of limit if the request URL is /items (no query parameters)?
@Get('items')
getItems(@Query('limit', new DefaultValuePipe(5)) limit: number) {
  return limit;
}
medium
A. undefined
B. null
C. 5
D. 0

Solution

  1. Step 1: Analyze the request URL and query parameters

    The URL /items has no limit query parameter provided.
  2. Step 2: Understand DefaultValuePipe behavior

    Since limit is missing, DefaultValuePipe sets it to the default value 5.
  3. Final Answer:

    5 -> Option C
  4. Quick Check:

    Missing param uses default value 5 [OK]
Hint: Missing query uses DefaultValuePipe value [OK]
Common Mistakes:
  • Assuming undefined when param is missing
  • Confusing null with default value
  • Expecting zero instead of default
4. Identify the error in this NestJS controller method using DefaultValuePipe:
@Get('users')
getUsers(@Query('page', DefaultValuePipe(1)) page: number) {
  return page;
}
medium
A. Default value must be a string, not a number
B. DefaultValuePipe cannot be used with @Query decorator
C. Parameter 'page' should be optional with '?'
D. Missing 'new' keyword when instantiating DefaultValuePipe

Solution

  1. Step 1: Check how DefaultValuePipe is instantiated

    The pipe must be created with the new keyword, but here it is called like a function.
  2. Step 2: Confirm correct usage with @Query

    DefaultValuePipe works with @Query, so no error there.
  3. Final Answer:

    Missing 'new' keyword when instantiating DefaultValuePipe -> Option D
  4. Quick Check:

    Always use 'new' with DefaultValuePipe [OK]
Hint: Remember 'new' before DefaultValuePipe instance [OK]
Common Mistakes:
  • Calling DefaultValuePipe as a function without 'new'
  • Thinking DefaultValuePipe only works with @Param
  • Making parameter optional instead of using pipe
5. You want to create a controller method that accepts an optional sort query parameter with a default value of 'asc'. Additionally, if the client sends an empty string for sort, it should also default to 'asc'. Which approach correctly achieves this behavior?
hard
A. Use @Query('sort', new DefaultValuePipe('asc')) sort: string
B. Use a custom pipe that returns 'asc' if value is missing or empty string
C. Use @Query('sort', new DefaultValuePipe('asc')) sort: string = 'asc'
D. Use @Query('sort') sort: string = 'asc' without any pipe

Solution

  1. Step 1: Understand DefaultValuePipe limitations

    DefaultValuePipe only sets default if value is missing (undefined), not if empty string is provided.
  2. Step 2: Consider handling empty string case

    To treat empty string as missing, a custom pipe is needed to check both missing and empty values and return 'asc'.
  3. Step 3: Evaluate other options

    Use @Query('sort', new DefaultValuePipe('asc')) sort: string = 'asc' sets default but does not handle empty string; Use @Query('sort', new DefaultValuePipe('asc')) sort: string does not handle empty string; Use @Query('sort') sort: string = 'asc' without any pipe ignores pipe usage.
  4. Final Answer:

    Use a custom pipe that returns 'asc' if value is missing or empty string -> Option B
  5. Quick Check:

    DefaultValuePipe ignores empty string, custom pipe needed [OK]
Hint: DefaultValuePipe skips empty strings; use custom pipe [OK]
Common Mistakes:
  • Assuming DefaultValuePipe handles empty strings
  • Setting default in parameter but ignoring pipe
  • Not handling empty string case explicitly
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