Controlador
@Get(') test( @Param('accountId') accountId: string, @Query('propertyName') propertyNames: string[], ) { console.log(propertyNames); } Solicitud de muestra localhost:8000?propertyName=test2&propertyName=test3
Producción:
[ 'test2', 'test3' ]
Esto funciona bien cuando tengo varios valores, pero cuando solo se envía un parámetro, crea una cadena en lugar de una matriz.
Solicitud: localhost:8000?propertyName=test3 Genera la salida: test3 en lugar de [test3]
Mi enfoque actual es usar (según https://stackoverflow.com/a/4775737/5236575 )
propertyName = [].concat(propertyName)
para asegurarse de que el valor es una matriz.
¿Hay alguna manera de obligar a Nest.js a analizar los parámetros de consulta como una matriz de cadenas en todo momento, ya que esto se requiere en varios lugares entre los controladores?
Nota: ValdiationPipe: la transform se establece en true
app.useGlobalPipes(new ValidationPipe({ whitelist: true, transform: true }));Fuera de mi cabeza, podría usar el decorador @Transform de class-transformer para lograr eso. Puede mover la lógica de transformar un solo parámetro de cadena en una matriz con la ayuda de ese decorador.