Tengo un DTO. Necesito validar las entradas de los usuarios contra algunas cadenas. Esos valores provienen del archivo ENV. Lo hice funcionar, pero también necesito ignorar el caso.
Este es el valor del archivo env:
SEARCH_BY_LANGUAGE="Java,Javascript"Esta es mi versión donde funciona, pero es sensible a los casos:
@Expose() @IsNotEmpty() @ApiProperty() @IsIn(process.env.SEARCH_BY_LANGUAGE.toLowerCase().split(",")) targetLanguage: stringEl problema con este enfoque es que Java y Java se tratan de manera diferente.
He intentado usar @Matches, así:
@Expose() @IsNotEmpty() @ApiProperty() @Matches(`^${process.env.SEARCH_BY_LANGUAGE.split(",")}$`, 'i') targetLanguage: stringPero estoy recibiendo este error:
[ExceptionsHandler] Indicadores no válidos suministrados al constructor RegExp '^Java,Javascript$' +14493m
Siento que estoy cerca, pero no puedo entenderlo.
Tiene dos enfoques posibles para eso, el primero es el decorador @Transform() de class-transformer , como Jay McDoniel comentó anteriormente:
Puede realizar una transformación de datos adicional utilizando el decorador @Transform. Por ejemplo, desea que su objeto Fecha sea un objeto de momento cuando está transformando un objeto de simple a clase:
import { Transform } from 'class-transformer'; import * as moment from 'moment'; import { Moment } from 'moment'; export class Photo { id: number; @Type(() => Date) @Transform(({ value }) => moment(value), { toClassOnly: true }) date: Moment; }Ahora, cuando llame a plainToClass y envíe una representación simple del objeto Foto >, convertirá un valor de fecha en su objeto de foto en una fecha de momento. El decorador @Transform también admite grupos y control de versiones.
Así que harías algo como esto:
@Transform((value) => value.toLowerCase() }) targetLanguage: stringSu segundo enfoque sería usar un interceptor personalizado NestJS y cambiar manualmente su carga útil/datos antes de usarlo