0
0
NestJSframework~20 mins

Custom pipes in NestJS - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
NestJS Pipes 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 custom pipe transformation?
Consider this NestJS custom pipe that transforms input to uppercase. What will be the output when the pipe is applied to the string 'hello'?
NestJS
import { PipeTransform, Injectable, ArgumentMetadata } from '@nestjs/common';

@Injectable()
export class UppercasePipe implements PipeTransform {
  transform(value: any, metadata: ArgumentMetadata) {
    return typeof value === 'string' ? value.toUpperCase() : value;
  }
}

// Usage example:
// const result = new UppercasePipe().transform('hello', { type: 'body', metatype: String, data: '' });
A'HELLO'
B'hello'
Cundefined
DThrows TypeError
Attempts:
2 left
💡 Hint
Think about what the transform method does to string inputs.
📝 Syntax
intermediate
2:00remaining
Which option correctly implements a custom pipe that validates a positive integer?
You want to create a custom pipe that throws an error if the input is not a positive integer. Which code snippet correctly implements this?
A
import { PipeTransform, Injectable, BadRequestException } from '@nestjs/common';

@Injectable()
export class PositiveIntPipe implements PipeTransform {
  transform(value: any) {
    const val = parseFloat(value);
    if (!Number.isInteger(val) || val <= 0) {
      throw new BadRequestException('Value must be a positive integer');
    }
    return val;
  }
}
B
import { PipeTransform, Injectable } from '@nestjs/common';

@Injectable()
export class PositiveIntPipe implements PipeTransform {
  transform(value: any) {
    if (value <= 0) {
      throw new Error('Value must be positive');
    }
    return value;
  }
}
C
import { PipeTransform, Injectable, BadRequestException } from '@nestjs/common';

@Injectable()
export class PositiveIntPipe implements PipeTransform {
  transform(value: any) {
    const val = Number(value);
    if (val < 0) {
      throw new BadRequestException('Value must be positive');
    }
    return val;
  }
}
D
import { PipeTransform, Injectable, BadRequestException } from '@nestjs/common';

@Injectable()
export class PositiveIntPipe implements PipeTransform {
  transform(value: any) {
    const val = parseInt(value, 10);
    if (isNaN(val) || val <= 0) {
      throw new BadRequestException('Value must be a positive integer');
    }
    return val;
  }
}
Attempts:
2 left
💡 Hint
Check for integer parsing and proper error throwing.
🔧 Debug
advanced
2:00remaining
Why does this custom pipe cause a runtime error?
This pipe is intended to trim string inputs. Why does it cause a runtime error when a number is passed?
NestJS
import { PipeTransform, Injectable } from '@nestjs/common';

@Injectable()
export class TrimPipe implements PipeTransform {
  transform(value: any) {
    return value.trim();
  }
}
ABecause the transform method must return a Promise, but it returns a string.
BBecause 'value' might not be a string and numbers do not have a trim method, causing a TypeError.
CBecause the pipe is missing the @Injectable decorator, so it cannot be instantiated.
DBecause the pipe does not handle null values, causing a ReferenceError.
Attempts:
2 left
💡 Hint
Think about what happens when you call trim on a non-string.
state_output
advanced
2:00remaining
What is the value returned by this custom pipe after transformation?
Given this pipe that parses JSON strings, what is the returned value when input is '{"a":1,"b":2}'?
NestJS
import { PipeTransform, Injectable, BadRequestException } from '@nestjs/common';

@Injectable()
export class ParseJsonPipe implements PipeTransform {
  transform(value: any) {
    try {
      return JSON.parse(value);
    } catch {
      throw new BadRequestException('Invalid JSON string');
    }
  }
}
A{'a': 1, 'b': 2}
B{a:1,b:2}
CThrows BadRequestException
D{"a":1,"b":2}
Attempts:
2 left
💡 Hint
Remember what JSON.parse returns.
🧠 Conceptual
expert
2:00remaining
Which statement about custom pipes in NestJS is true?
Select the correct statement about how custom pipes work in NestJS.
ACustom pipes can only be used for validation and cannot modify the input value.
BCustom pipes run after the controller method executes to modify the response.
CCustom pipes run before route handlers and can transform or validate incoming data.
DCustom pipes must always return a Promise and cannot return synchronous values.
Attempts:
2 left
💡 Hint
Think about when pipes are executed in the request lifecycle.