Bird
Raised Fist0
NestJSframework~10 mins

ValidationPipe setup 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 ValidationPipe from NestJS.

NestJS
import { [1] } from '@nestjs/common';
Drag options to blanks, or click blank then click option'
APipeTransform
BValidationPipe
CController
DInjectable
Attempts:
3 left
💡 Hint
Common Mistakes
Importing unrelated classes like Controller or Injectable.
Confusing ValidationPipe with PipeTransform interface.
2fill in blank
medium

Complete the code to apply ValidationPipe globally in the main.ts file.

NestJS
app.useGlobalPipes(new [1]());
Drag options to blanks, or click blank then click option'
AValidationPipe
BLogger
CAuthGuard
DParseIntPipe
Attempts:
3 left
💡 Hint
Common Mistakes
Using pipes unrelated to validation like ParseIntPipe.
Forgetting to instantiate the pipe with new.
3fill in blank
hard

Fix the error in the ValidationPipe options to enable automatic transformation.

NestJS
app.useGlobalPipes(new ValidationPipe({ transform: [1] }));
Drag options to blanks, or click blank then click option'
Afalse
B'true'
Ctrue
DTrue
Attempts:
3 left
💡 Hint
Common Mistakes
Using string 'true' instead of boolean true.
Using capitalized True which is invalid in JavaScript/TypeScript.
4fill in blank
hard

Fill both blanks to configure ValidationPipe to whitelist and forbid non-whitelisted properties.

NestJS
app.useGlobalPipes(new ValidationPipe({ whitelist: [1], forbidNonWhitelisted: [2] }));
Drag options to blanks, or click blank then click option'
Atrue
Bfalse
Cundefined
Dnull
Attempts:
3 left
💡 Hint
Common Mistakes
Setting these options to false disables the security benefits.
Using undefined or null instead of boolean values.
5fill in blank
hard

Fill all three blanks to create a ValidationPipe with transform, whitelist, and forbidNonWhitelisted enabled.

NestJS
app.useGlobalPipes(new ValidationPipe({ transform: [1], whitelist: [2], forbidNonWhitelisted: [3] }));
Drag options to blanks, or click blank then click option'
Afalse
Btrue
Cundefined
Dnull
Attempts:
3 left
💡 Hint
Common Mistakes
Leaving any option false disables part of validation.
Using undefined or null instead of boolean true.

Practice

(1/5)
1. What is the main purpose of using ValidationPipe in a NestJS application?
easy
A. To serve static files like images and CSS
B. To handle database connections automatically
C. To check and clean incoming data to ensure it is safe and correct
D. To manage user authentication and authorization

Solution

  1. Step 1: Understand ValidationPipe role

    ValidationPipe is designed to validate and sanitize incoming data in NestJS, ensuring the data meets expected rules.
  2. Step 2: Compare with other options

    Other options like database handling, authentication, or serving static files are unrelated to ValidationPipe's purpose.
  3. Final Answer:

    To check and clean incoming data to ensure it is safe and correct -> Option C
  4. Quick Check:

    ValidationPipe purpose = data validation and cleaning [OK]
Hint: ValidationPipe is all about checking incoming data [OK]
Common Mistakes:
  • Confusing ValidationPipe with authentication features
  • Thinking ValidationPipe manages database connections
  • Assuming ValidationPipe serves static files
2. Which is the correct way to apply ValidationPipe globally in a NestJS app inside main.ts?
easy
A. app.useGlobalPipes(new ValidationPipe())
B. app.usePipes(new ValidationPipe())
C. app.setGlobalPipes(new ValidationPipe())
D. app.applyGlobalPipes(new ValidationPipe())

Solution

  1. Step 1: Recall NestJS global pipe method

    The official method to set global pipes is app.useGlobalPipes().
  2. Step 2: Check other options

    Methods like usePipes, setGlobalPipes, or applyGlobalPipes do not exist or are incorrect.
  3. Final Answer:

    app.useGlobalPipes(new ValidationPipe()) -> Option A
  4. Quick Check:

    Global pipe setup = useGlobalPipes() [OK]
Hint: Global pipes use app.useGlobalPipes() [OK]
Common Mistakes:
  • Using non-existent methods like setGlobalPipes
  • Confusing useGlobalPipes with usePipes
  • Missing the 'new' keyword before ValidationPipe
3. Given this main.ts snippet, what will happen when a request sends extra properties not defined in the DTO?
app.useGlobalPipes(new ValidationPipe({ whitelist: true }));
medium
A. The request will fail with a validation error
B. Extra properties will be removed from the incoming data
C. Extra properties will be kept without changes
D. The app will crash due to unknown properties

Solution

  1. Step 1: Understand whitelist option in ValidationPipe

    Setting whitelist: true removes any properties not defined in the DTO from the incoming data.
  2. Step 2: Check behavior on extra properties

    With whitelist true, extra properties are stripped, not causing errors or crashes.
  3. Final Answer:

    Extra properties will be removed from the incoming data -> Option B
  4. Quick Check:

    whitelist true = remove extra props [OK]
Hint: whitelist true strips unknown properties [OK]
Common Mistakes:
  • Thinking whitelist causes validation errors on extra props
  • Assuming extra props are kept unchanged
  • Believing app crashes on extra properties
4. What is wrong with this main.ts code snippet for setting up ValidationPipe globally?
app.useGlobalPipes(ValidationPipe({ transform: true }));
medium
A. Missing 'new' keyword before ValidationPipe
B. The 'transform' option is invalid
C. useGlobalPipes should be called inside a controller
D. ValidationPipe cannot be used globally

Solution

  1. Step 1: Check ValidationPipe instantiation

    ValidationPipe is a class and must be instantiated with the new keyword.
  2. Step 2: Validate other parts

    The transform option is valid, and useGlobalPipes is correctly used in main.ts.
  3. Final Answer:

    Missing 'new' keyword before ValidationPipe -> Option A
  4. Quick Check:

    Instantiate ValidationPipe with new [OK]
Hint: Always use 'new' with ValidationPipe class [OK]
Common Mistakes:
  • Omitting 'new' keyword when creating ValidationPipe
  • Thinking transform option is invalid
  • Trying to set global pipes inside controllers
5. You want to automatically convert incoming JSON strings to their expected types in your DTOs. Which ValidationPipe option should you enable globally to achieve this?
hard
A. forbidNonWhitelisted: true
B. whitelist: true
C. disableErrorMessages: true
D. transform: true

Solution

  1. Step 1: Understand transform option

    Setting transform: true tells ValidationPipe to convert incoming payloads to the types defined in DTO classes automatically.
  2. Step 2: Check other options

    whitelist removes extra properties, forbidNonWhitelisted throws errors on extra props, and disableErrorMessages hides validation errors; none convert types.
  3. Final Answer:

    transform: true -> Option D
  4. Quick Check:

    transform true = auto type conversion [OK]
Hint: Use transform true to convert types automatically [OK]
Common Mistakes:
  • Confusing whitelist with type conversion
  • Thinking forbidNonWhitelisted converts types
  • Believing disableErrorMessages affects data types
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