Теперь для включения валидаторов DTO в NEST JS - PullRequest
0 голосов
/ 17 апреля 2020

Я новичок в NEST JS, и теперь я пытаюсь включить некоторый валидатор в DTO'S:


// /blog-backend/src/blog/dto/create-post.dto.ts
import { IsEmail, IsNotEmpty, IsDefined } from 'class-validator';
export class CreatePostDTO {
  @IsDefined()
  @IsNotEmpty()
  title: string;
  @IsDefined()
  @IsNotEmpty()
  description: string;
  @IsDefined()
  @IsNotEmpty()
  body: string;
  @IsEmail()
  @IsNotEmpty()
  author: string;
  @IsDefined()
  @IsNotEmpty()
  datePosted: string;
}

Но когда я извиняюсь за почтовую службу, как:

{
    "title":"juanita"
}

Его возвращение хорошо! Но валидаторы должны показывать и ошибки справа?

Мой пост-контроллер

@Post('/post')
  async addPost(@Res() res, @Body() createPostDTO: CreatePostDTO) {
    console.log(createPostDTO)
    const newPost = await this.blogService.addPost(createPostDTO);
    return res.status(HttpStatus.OK).json({
      message: 'Post has been submitted successfully!',
      post: newPost,
    });
  }

Мой main.ts

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

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

  await app.listen(5000);
}
bootstrap();

1 Ответ

1 голос
/ 17 апреля 2020

Давайте свяжем ValidationPipe на уровне приложения, что обеспечит защиту всех конечных точек от получения неверных данных. Гнездо js документ

Включить ValidationPipe для вашего приложения.

main.ts

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { ValidationPipe } from '@nestjs/common'; // import built-in ValidationPipe

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.useGlobalPipes(new ValidationPipe()); // enable ValidationPipe`
  await app.listen(5000);
}
bootstrap();
...