typescript - NestJS: Pipe não aplicado aos parâmetros de corpo vinculados
Estou tentando encontrar uma maneira decente de validar o esquema de forma diferente para o mesmo objeto. Foi assim que me familiarizei com a opção de validação groups do class-validator.
De acordo com a documentação do parâmetro Body do NestJS, ela afirma
Também aplica pipes ao parâmetro de corpo vinculado.
Eu tenho um modelo de Evento que possui uma propriedade status. Ao criar um Evento (POST - /events), o status é opcional, mas ao atualizar o status (PATCH - /events/:id/status), ele é obrigatório.
@Entity("events")
export class Events {
@IsString({ groups: ["updateStatus"] })
@IsNotEmpty({ groups: ["updateStatus"] })
@IsOptional({ groups: ["createOne"] })
@IsEnum(EventStatus, { groups: ["updateStatus"] })
@Column({
type: "enum",
enum: EventStatus,
default: EventStatus.OPEN
})
status: EventStatus;
// ...other properties also.
}
Quando fiz uma solicitação de atualização de status, forneci o @Body com 'status' como parâmetro e ValidationPipe como opção de pipe.
@Patch('/:id/status')
async updateStatus(
@Body(
'status',
new ValidationPipe({
groups: ['updateStatus'],
}),
)
status: EventStatus
) {
// Business logic.
}
Mas com este código, ele não está validando o campo de status de acordo com o grupo mencionado. Alguém sabe o que estou fazendo de errado? Qualquer ajuda será muito apreciada.