Глобальный канал в Nest
На каждом маршруте номер в адресе снова строка, и канал приходится повторять в декораторах. Забытая копия ломает тип, хотя правило одно для всего сервера.
Глобальный канал регистрируют при старте приложения до открытия порта. Он действует на параметры всех обработчиков: значение из адреса или запроса проходит преобразование, даже если в методе декоратор параметра канала не указан.
Покажем на примере карточки поста с одним числовым параметром адреса:
import { Controller, Get, Param } from '@nestjs/common';
@Controller('posts')
export class PostController {
@Get(':id')
getPost(@Param('id') id: number): string {
return String(id);
}
}
Перед прослушиванием порта повесим канал целого числа на всё приложение в точке входа:
import { NestFactory } from '@nestjs/core';
import { ParseIntPipe } from '@nestjs/common';
import { AppModule } from './app.module.js';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(new ParseIntPipe());
await app.listen(process.env.PORT ?? 3000);
}
await bootstrap();
Контроллер по-прежнему регистрируем в корневом модуле:
import { Module } from '@nestjs/common';
import { PostController } from './post.controller.js';
@Module({
controllers: [PostController],
})
export class AppModule {}
Сделайте открытие карточки работника
по номеру в адресе с общим для
приложения преобразованием в число
в контроллере WorkerController
и подключите его к корневому модулю.