What is the purpose of the Default Value Pipe in NestJS?
The Default Value Pipe sets a default value for a route parameter or query if the client does not provide one. It helps avoid undefined or missing values in handlers.
Click to reveal answer
beginner
How do you apply the Default Value Pipe to a query parameter in NestJS?
You use it in the controller method parameter like this: @Query('page', new DefaultValuePipe(1)) page: number This means if 'page' is missing, it defaults to 1.
Click to reveal answer
intermediate
Can the Default Value Pipe be combined with other pipes in NestJS? How?
Yes. You can chain pipes by passing them as separate arguments: @Query('limit', new DefaultValuePipe(10), new ParseIntPipe()) limit: number This sets a default and then converts to number.
Click to reveal answer
beginner
What happens if the Default Value Pipe is not used and a query parameter is missing?
The parameter value will be undefined in the controller method, which may cause errors if not handled properly.
Click to reveal answer
beginner
Write a simple example of a NestJS controller method using Default Value Pipe for a 'sort' query parameter with default 'asc'.
@Get()
getItems(@Query('sort', new DefaultValuePipe('asc')) sort: string) {
return `Sorting items by ${sort}`;
}
Click to reveal answer
What does the Default Value Pipe do in NestJS?
ABlocks requests without parameters
BSets a default value if the input is missing
CTransforms input to uppercase
DValidates the input format
✗ Incorrect
The Default Value Pipe provides a fallback value when the client does not send a parameter.
How do you apply Default Value Pipe to a route parameter named 'id' with default 0?
A@Param('id', new DefaultValuePipe(0)) id: number
B@Query('id', new DefaultValuePipe(0)) id: number
C@Body('id', new DefaultValuePipe(0)) id: number
D@Param('id', ParseIntPipe) id: number
✗ Incorrect
Route parameters use @Param decorator; DefaultValuePipe sets default if missing.
Which of these is a valid way to chain Default Value Pipe with ParseIntPipe?
A@Query('page', [new DefaultValuePipe(1), new ParseIntPipe()]) page: number
B@Query('page', ParseIntPipe, DefaultValuePipe) page: number
C@Query('page', new DefaultValuePipe(1)) page: number
D@Query('page', new DefaultValuePipe(1), new ParseIntPipe()) page: number
✗ Incorrect
You can pass multiple pipes as separate arguments to the decorator.
If a query parameter is missing and no Default Value Pipe is used, what is the parameter value?
Aundefined
Bnull
Cempty string
Ddefault value 0
✗ Incorrect
Missing parameters are undefined unless a default is set.
Which decorator is used to access query parameters in NestJS?
A@Body()
B@Param()
C@Query()
D@Headers()
✗ Incorrect
@Query() accesses query string parameters from the URL.
Explain how the Default Value Pipe improves handling of missing parameters in NestJS controllers.
Think about what happens when a client forgets to send a parameter.
You got /4 concepts.
Describe how to combine Default Value Pipe with other pipes like ParseIntPipe in a NestJS controller.
Consider the order of pipes and their roles.
You got /4 concepts.
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
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.
Step 2: Compare with other pipe functions
Unlike validation or transformation pipes, DefaultValuePipe does not validate or convert but only sets a fallback value.
Final Answer:
To provide a fallback value when a request parameter is missing -> Option A
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
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.
Step 2: Confirm the correct usage of DefaultValuePipe
The DefaultValuePipe requires a value in its constructor, so new DefaultValuePipe(10) is correct.
Final Answer:
@Query('page', new DefaultValuePipe(10)) page: number -> Option A
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
Step 1: Analyze the request URL and query parameters
The URL /items has no limit query parameter provided.
Step 2: Understand DefaultValuePipe behavior
Since limit is missing, DefaultValuePipe sets it to the default value 5.
Final Answer:
5 -> Option C
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:
B. DefaultValuePipe cannot be used with @Query decorator
C. Parameter 'page' should be optional with '?'
D. Missing 'new' keyword when instantiating DefaultValuePipe
Solution
Step 1: Check how DefaultValuePipe is instantiated
The pipe must be created with the new keyword, but here it is called like a function.
Step 2: Confirm correct usage with @Query
DefaultValuePipe works with @Query, so no error there.
Final Answer:
Missing 'new' keyword when instantiating DefaultValuePipe -> Option D
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
Step 1: Understand DefaultValuePipe limitations
DefaultValuePipe only sets default if value is missing (undefined), not if empty string is provided.
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'.
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.
Final Answer:
Use a custom pipe that returns 'asc' if value is missing or empty string -> Option B