Концепция Nest Pipes
может быть ответом на вашу проблему.
Вы будете использовать ее на уровне метода / маршрута (в отличие от глобального / модуля / уровня контроллера).) в вашем контроллере, используя @Param('<your-param>' YourCustomPipe)
в вашем маршруте
Пример :
Сначала определите свой пользовательский HandleDateParameter
pipe
// handle-date-parameter.pipe.ts
import { PipeTransform, Injectable, ArgumentMetadata, HttpStatus,
BadRequestException } from '@nestjs/common';
@Injectable()
export class HandleDateParameter implements PipeTransform<string, number> {
transform(value: string, metadata: ArgumentMetadata) {
// ...implement your custom logic here to validate your date for example or do whatever you want :)
// finally you might want to return your custom value or throw an exception (i.e: throw new BadRequestException('Validation failed'))
return <your-custom-value>;
}
}
А затем используйте его в своем контроллере
// reports.controller.ts
// [Make your imports here (HandleDateParameter and other stuff you need)]
@Controller('reports')
export class ReportsController {
@Get('getDailyReports/:startDate')
// The following line is where the magic happens :) (you will handle the startDate param in your pipe
findDailyReports(@Param('startDate', HandleDateParameter) startDate: Date) {
//.... your custom logic here
return <whatever-need-to-be-returned>;
}
}
Дайте мне знать, если это поможет вам;)