Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • NestJS Documentation21টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • Installation
  • Modules
  • Controllers
  • Providers & DI
  • Pipes
  • Guards
  • Interceptors
  • Exception Handling
  • Middleware
  • Database
  • Authentication
  • Config & Env
  • File Upload
  • WebSockets
  • Microservices
  • Swagger
  • Testing
  • Best Practices
  • Project
  • Interview
  1. Docs
  2. NestJS
  3. NestJS Pipes & Validation
NestJSIntermediate

NestJS Pipes & Validation

Built-in pipes, ValidationPipe, DTO, class-validator — data transform ও validate বাংলায়।

12টি অংশবাংলা ভাষায়

Pipe incoming data-কে transform/validate করতে ব্যবহৃত হয় — route param-কে number করা, body validate করা ইত্যাদি।

Built-in Pipes

import { ParseIntPipe, ParseUUIDPipe, Controller, Get, Param } from "@nestjs/common";

@Controller("users")
export class UsersController {
  @Get(":id")
  // :id auto number-এ convert হবে
  findOne(@Param("id", ParseIntPipe) id: number) {
    console.log(typeof id); // "number"
    return { id };
  }

  @Get("uuid/:id")
  findWithUuid(@Param("id", ParseUUIDPipe) id: string) {
    return { id };
  }

  @Get("default/:id")
  // ceil ডিফল্ট omit করা যায়
  findDefault(@Param("id", new ParseIntPipe({ errorHttpStatusCode: 404 })) id: number) {
    return { id };
  }
}

DTO + class-validator (ডেফল্ট পদ্ধতি)

npm i class-validator class-transformer
src/users/dto/create-user.dto.tstypescript
typescript
import { IsEmail, IsInt, IsString, Min, Max, MinLength } from "class-validator";

export class CreateUserDto {
  @IsString()
  @MinLength(2, { message: "নাম কমপক্ষে 2 অক্ষর" })
  name: string;

  @IsEmail()
  email: string;

  @IsInt()
  @Min(18)
  @Max(120)
  age: number;
}

ValidationPipe ব্যবহার

main.ts — global validationtypescript
typescript
import { NestFactory } from "@nestjs/core";
import { ValidationPipe } from "@nestjs/common";
import { AppModule } from "./app.module";

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  // global ValidationPipe — সব DTO auto-validate
  app.useGlobalPipes(new ValidationPipe({
    whitelist: true,       // DTO-তে নেই এমন property strip
    forbidNonWhitelisted: true, // unknown property → 400
    transform: true,       // type transform
  }));

  await app.listen(3000);
}
bootstrap();
controller-এ DTOtypescript
typescript
import { Body, Controller, Post } from "@nestjs/common";
import { CreateUserDto } from "./dto/create-user.dto";

@Controller("users")
export class UsersController {
  @Post()
  create(@Body() dto: CreateUserDto) {
    // dto valid — whitelist applied
    return dto;
  }
}

Custom Pipe

src/common/pipes/title-case.pipe.tstypescript
typescript
import { PipeTransform, Injectable, BadRequestException } from "@nestjs/common";

@Injectable()
export class TitleCasePipe implements PipeTransform {
  transform(value: string): string {
    if (typeof value !== "string") {
      throw new BadRequestException("string দরকার");
    }
    return value
      .split(" ")
      .map((w) => w[0].toUpperCase() + w.slice(1))
      .join(" ");
  }
}

// ব্যবহার
@Param("name", TitleCasePipe) name: string
Global Pipe setup

whitelist: true মানে DTO-তে না থাকলে property deleted — API predictable থাকে। যত দ্রুত possible validation world-class solver ব্যবহার করুন।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরProviders এবং Dependency InjectionপরেরNestJS Guards & Authorization
এই পেজে
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com