Bird
Raised Fist0
NestJSframework~10 mins

Built-in pipes (ParseIntPipe, ParseBoolPipe) in NestJS - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Built-in pipes (ParseIntPipe, ParseBoolPipe)
Receive Request Parameter as String
↓
Apply Pipe: ParseIntPipe or ParseBoolPipe
↓
Valid Conversion
↓
Pass Converted Value
↓
Controller Method Executes
The pipe takes a string input from a request, tries to convert it to int or bool, passes it if valid, or throws an error if invalid.
Execution Sample
NestJS
@Get(':id')
getById(@Param('id', ParseIntPipe) id: number) {
  return `ID is ${id}`;
}
This code converts the 'id' route parameter from string to number using ParseIntPipe before using it.
Execution Table
StepInput ParameterPipe AppliedConversion ResultAction TakenOutput or Error
1'123'ParseIntPipe123 (number)Pass converted value`ID is 123`
2'abc'ParseIntPipeNaN (invalid)Throw BadRequestException400 Bad Request Error
3'true'ParseBoolPipetrue (boolean)Pass converted valuetrue
4'false'ParseBoolPipefalse (boolean)Pass converted valuefalse
5'yes'ParseBoolPipeInvalid booleanThrow BadRequestException400 Bad Request Error
💡 Execution stops when conversion fails and pipe throws BadRequestException.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4After Step 5
inputParamundefined'123''abc''true''false''yes'
convertedValueundefined123NaNtruefalseInvalid
actionnonepassthrow errorpasspassthrow error
Key Moments - 2 Insights
Why does ParseIntPipe throw an error when the input is 'abc'?
Because 'abc' cannot be converted to a number, the pipe detects NaN and throws a BadRequestException as shown in execution_table step 2.
What happens if ParseBoolPipe receives 'yes' as input?
ParseBoolPipe only accepts 'true' or 'false' strings (case insensitive). 'yes' is invalid, so it throws a BadRequestException as in execution_table step 5.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the output when input parameter is '123' with ParseIntPipe?
A`ID is 123`
B400 Bad Request Error
CNaN
Dundefined
💡 Hint
Check execution_table row 1 under Output or Error column.
At which step does the condition cause a BadRequestException due to invalid boolean?
AStep 3
BStep 2
CStep 5
DStep 4
💡 Hint
Look at execution_table rows with ParseBoolPipe and check Conversion Result and Action Taken.
If the input parameter changes from 'false' to 'true' with ParseBoolPipe, what changes in variable_tracker?
AinputParam changes from true to false
BconvertedValue changes from false to true
Caction changes from throw error to pass
DNo change in variables
💡 Hint
Check variable_tracker rows for convertedValue at After Step 3 and After Step 4.
Concept Snapshot
Built-in pipes like ParseIntPipe and ParseBoolPipe convert string inputs from requests into numbers or booleans.
If conversion succeeds, the converted value is passed to the controller.
If conversion fails, a BadRequestException is thrown, stopping execution.
Use pipes in @Param or @Query decorators to validate and transform inputs automatically.
Full Transcript
In NestJS, built-in pipes such as ParseIntPipe and ParseBoolPipe help convert string inputs from HTTP requests into numbers or booleans. When a request comes in, the pipe tries to convert the string parameter. If successful, it passes the converted value to the controller method. If the conversion fails, the pipe throws a BadRequestException, which results in a 400 error response. For example, ParseIntPipe converts '123' to number 123, but throws an error for 'abc'. ParseBoolPipe converts 'true' or 'false' strings to booleans, but throws an error for invalid strings like 'yes'. Using these pipes ensures your controller receives correctly typed data and handles invalid inputs gracefully.

Practice

(1/5)
1. What is the main purpose of NestJS built-in pipes like ParseIntPipe and ParseBoolPipe?
easy
A. To create new HTTP routes in the application
B. To format output data before sending it to the client
C. To handle database connections automatically
D. To automatically convert and validate input types like numbers and booleans

Solution

  1. Step 1: Understand the role of pipes in NestJS

    Pipes transform and validate incoming data before it reaches the route handler.
  2. Step 2: Identify what ParseIntPipe and ParseBoolPipe do

    They convert string inputs to integer and boolean types respectively, ensuring correct data types.
  3. Final Answer:

    To automatically convert and validate input types like numbers and booleans -> Option D
  4. Quick Check:

    Pipe purpose = convert and validate input [OK]
Hint: Pipes transform inputs before controller methods run [OK]
Common Mistakes:
  • Confusing pipes with output formatting
  • Thinking pipes manage database or routing
  • Assuming pipes only validate without conversion
2. Which of the following is the correct way to use ParseIntPipe in a NestJS controller method parameter?
easy
A. @Body('id', ParseIntPipe) id: string
B. @Param('id', ParseIntPipe) id: string
C. @Param('id', ParseIntPipe) id: number
D. @Query('id', ParseIntPipe) id: boolean

Solution

  1. Step 1: Check the parameter decorator and pipe usage

    Using @Param('id', ParseIntPipe) applies the pipe to convert the 'id' route parameter.
  2. Step 2: Match the parameter type with the pipe's output

    ParseIntPipe converts input to a number, so the parameter type must be number.
  3. Final Answer:

    @Param('id', ParseIntPipe) id: number -> Option C
  4. Quick Check:

    ParseIntPipe converts to number, so type = number [OK]
Hint: ParseIntPipe means parameter type must be number [OK]
Common Mistakes:
  • Using string type with ParseIntPipe
  • Applying pipe to wrong decorator like @Body for route param
  • Assigning boolean type with ParseIntPipe
3. Given this NestJS controller method:
@Get(':active')
getStatus(@Param('active', ParseBoolPipe) active: boolean) {
  return active ? 'Active' : 'Inactive';
}
What will be the response if the client requests /true?
medium
A. "Active"
B. "Inactive"
C. 400 Bad Request error
D. "true"

Solution

  1. Step 1: Understand ParseBoolPipe behavior

    ParseBoolPipe converts string 'true' to boolean true.
  2. Step 2: Evaluate the method return based on boolean value

    Since active is true, the method returns 'Active'.
  3. Final Answer:

    "Active" -> Option A
  4. Quick Check:

    Input 'true' -> boolean true -> returns 'Active' [OK]
Hint: ParseBoolPipe converts 'true' string to boolean true [OK]
Common Mistakes:
  • Expecting string 'true' instead of boolean
  • Assuming 400 error for valid boolean string
  • Confusing output with input string
4. Consider this NestJS controller method:
@Get(':id')
getUser(@Param('id', ParseIntPipe) id: number) {
  return `User ID is ${id}`;
}
If a client sends a request to /abc, what will happen?
medium
A. Throws a 400 Bad Request error
B. Returns 'User ID is NaN'
C. Returns 'User ID is abc'
D. Returns 'User ID is 0'

Solution

  1. Step 1: Understand ParseIntPipe input validation

    ParseIntPipe tries to convert 'abc' to a number but fails.
  2. Step 2: Identify NestJS behavior on invalid pipe input

    When conversion fails, NestJS returns a 400 Bad Request error automatically.
  3. Final Answer:

    Throws a 400 Bad Request error -> Option A
  4. Quick Check:

    Invalid int input -> 400 error [OK]
Hint: Invalid number input with ParseIntPipe causes 400 error [OK]
Common Mistakes:
  • Expecting string output instead of error
  • Assuming NaN is returned
  • Thinking it defaults to 0
5. You want to create a NestJS route that accepts a query parameter enabled which should be a boolean. Which of the following is the best way to ensure enabled is automatically converted and validated as a boolean?
hard
A. @Query('enabled', ParseIntPipe) enabled: boolean
B. @Query('enabled', ParseBoolPipe) enabled: boolean
C. @Body('enabled', ParseBoolPipe) enabled: string
D. @Param('enabled', ParseBoolPipe) enabled: boolean

Solution

  1. Step 1: Identify the correct decorator for query parameters

    Query parameters use the @Query decorator.
  2. Step 2: Match the pipe and parameter type

    ParseBoolPipe converts string to boolean, so parameter type must be boolean.
  3. Final Answer:

    @Query('enabled', ParseBoolPipe) enabled: boolean -> Option B
  4. Quick Check:

    Query param + ParseBoolPipe + boolean type = correct [OK]
Hint: Use @Query with ParseBoolPipe for boolean query params [OK]
Common Mistakes:
  • Using ParseIntPipe for boolean values
  • Using @Body or @Param instead of @Query for query params
  • Mismatching parameter type with pipe output
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