Я разрабатываю apis & microservices в nestJS, это моя функция контроллера
@Post()
@MessagePattern({ service: TRANSACTION_SERVICE, msg: 'create' })
create( @Body() createTransactionDto: TransactionDto_create ) : Promise<Transaction>{
return this.transactionsService.create(createTransactionDto)
}
когда я вызываю post api, проверка dto работает нормально, но когда я вызываю это с использованием проверки microservice, проверка не работает, и онапереходит на обслуживание без отклонения с ошибкой.Вот мой DTO
import { IsEmail, IsNotEmpty, IsString } from 'class-validator';
export class TransactionDto_create{
@IsNotEmpty()
action: string;
// @IsString()
readonly rec_id : string;
@IsNotEmpty()
readonly data : Object;
extras : Object;
// readonly extras2 : Object;
}
, когда я вызываю API без параметра действия, он показывает требуемое действие ошибки, но когда я вызываю это из микросервиса, используя
const pattern = {service: TRANSACTION_SERVICE,msg: 'create'};const data = {id: '5d1de5d787db5151903c80b9', дополнительные: {'asdf': 'dsf'}};
return this.client.send<number>(pattern, data)
не выдает ошибку и переходит в сервис.Я также добавил валидацию globalpipe.
app.useGlobalPipes(new ValidationPipe({
disableErrorMessages: false, // set true to hide detailed error message
whitelist: false, // set true to strip params which are not in DTO
transform: false // set true if you want DTO to convert params to DTO class by default its false
}));
как это будет работать как для API, так и для микросервисов, потому что мне нужно все в одном месте и с одинаковыми функциями, чтобы по каждому клиенту его можно было вызывать.