Запрос Декораторы не подходят для того, что вы пытаетесь выполнить, так как они предназначены для получения информации из объекта запроса, а не для ее изменения. Вместо этого вы должны использовать interceptor
, так как он будет работать до того, как остальные декораторы позволят вам правильно обновить тело запроса, чтобы оно автоматически подбиралось @Body
и ValidationPipe
(что, как я полагаю, вы используете в противном случае проверка не произойдет).
import { ExecutionContext, Injectable, NestInterceptor } from '@nestjs/common';
import { Observable } from 'rxjs';
@Injectable()
export class CompanyCodeInterceptor implements NestInterceptor {
intercept(
context: ExecutionContext,
call$: Observable<any>,
): Observable<any> {
const req = context.switchToHttp().getRequest();
req.body.ZON_EMPRESA = req.user.USU_EMPRESA;
return call$;
}
}
Перехватчики могут применяться в методе, контроллере или глобальной области видимости. Например, применение его к одному обработчику HTTP внутри вашего контроллера:
@Post()
@UseInterceptors(CompanyCodeInterceptor)
exampleHandler(@Body() model: IZona) {
// model is properly validated here, do whatever
return model;
}