Как разобрать даты в JSON запросе с Nest Js @Body - PullRequest
0 голосов
/ 15 февраля 2020

У меня есть DTO, которое выглядит следующим образом:

class PersonDto {
   readonly name: string;
   readonly birthDate: Date;
}

Мой метод Nest Js выглядит следующим образом:

@Post
create(@Body() person: PersonDto) {
    console.log("New person with the following data:", person);
    // more logic here
}

Отправляемые данные JSON имеют birthDate в виде строки: "2020-01-15". Как я могу преобразовать эту строку в JavaScript Date объект? Я хотел бы добавить проверку класса @IsDate к PersonDto, но в настоящее время это не получится.

1 Ответ

1 голос
/ 16 февраля 2020

Я понял, как использовать глобальное ValidationPipe со свойством Date и аннотацией @IsDate():

Первый шаг - разрешить подобные преобразования (например, мой файл bootstrap) :

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.useGlobalPipes(new ValidationPipe({transform: true}));
  await app.listen(3000);
}
bootstrap();

Затем необходимо аннотировать DTO аннотацией @Type():

import { IsDate } from 'class-validator';
import { Type } from 'class-transformer';

class PersonDto {
   readonly name: string;
   @Type(() => Date)
   @IsDate()
   readonly birthDate: Date;
}
...