Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

198
Visualizações
Extender el decorador NestJS

Me encontré con esta pregunta , pero no creo que quiera usar un alias.

Quiero extender express anyFilesInterceptor para poder trabajar con un objeto de archivo personalizado. No estoy seguro de cómo extender un decorador en NestJS.

Entonces, como solución, probé la composición del decorador de otra pregunta . Sin embargo, recibo un error al intentar crear un decorador muy básico (ejemplo en la documentación)

 import { applyDecorators, createParamDecorator, ExecutionContext } from "@nestjs/common"; import { AnyFilesInterceptor } from "@nestjs/platform-express"; export function Test() { return applyDecorators( AnyFilesInterceptor, TestDecorator ) } export const TestDecorator = createParamDecorator( (data: string, ctx: ExecutionContext) => { const request = ctx.switchToHttp().getRequest(); const user = request.user; return data ? user?.[data] : user; }, );

Ahora puedo ver a partir de otras discusiones y la función que nombra que AnyFilesInterceptor es un mixin que devuelve una clase, mientras que TestDecorator creado por createParamDecorator probablemente solo funciona con parámetros.

¿NestJS tiene una forma de crear un decorador de clase? ¿O para ampliar los decoradores existentes?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

en realidad AnyFilesInterceptor es una función en sí misma que produce un interceptor (que es cualquier clase que implementa NestInterceptor ).
Puede verlo por el uso: mientras que 'otros' interceptores pueden usarse simplemente dando la clase al decorador UseInterceptor() , este interceptor necesita invocación (sin nueva palabra clave).
Ejemplo:

 @UseInterceptor(RegularInterceptor) //or @UseInterceptor(new RegularInterceptor()) // AnyFilesInterceptor is a function returning a class @UseInterceptor(AnyFilesInterceptor()) //or @UseInterceptor(new (AnyFilesInterceptor())({/* some multer options here */))

así que, básicamente, si desea extender AnyFilesInterceptor , simplemente necesita definir un interceptor de clase propio:

 export class MyAllFilesInterceptor extends AnyFilesInterceptor() { // YOU MUST OVERRIDE THE `intercept` METHOD! // also, give options to the `AnyFilesInterceptor` method if you wish }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda