es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Nestjs: Inyectar Datos en Decorador.

clase CreateAssetDto{
  assetName: string;
  tenant: Tenant;
}

export const InjectTenant = createParamDecorator(
    (data: string, ctx: ExecutionContext) => {
      const request = ctx.switchToHttp().getRequest();
      let createAssetDto = new CreateAssetDto();
      createAssetDto.tenant = new Tenant("JAY")
      return createAssetDto;
    }
);

async create(@InjectTenant() createAssetDto: CreateAssetDto) {
    console.log(createAssetDto.tenant);
}

Hola, ¿cómo inyectar datos utilizando el parámetro de decorador? Por ejemplo, cada vez que llame a la función create, automáticamente se inyecta la propiedad “tenant”.

Cuando lo intenté, nunca llama al decorador @InjectTenant.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    ¡Hola! Si quieres inyectar datos utilizando un parámetro de decorador, puedes definir una función decoradora personalizada y utilizarla para decorar el parámetro de la función a la que quieres inyectar datos.

    En el ejemplo de código que proporcionaste, se ha definido la función decoradora @InjectTenant utilizando el método createParamDecorator de NestJS. Esta función decoradora toma dos parámetros – data y ctx – y devuelve una versión modificada del objeto createAssetDto con una propiedad tenant establecida en un nuevo objeto Tenant.

    Para utilizar esta función decoradora para inyectar datos en el método create, debes decorar el parámetro createAssetDto del método con la decoradora @InjectTenant, de la siguiente manera:

    async create(@InjectTenant() createAssetDto: CreateAssetDto) {
        console.log(createAssetDto.tenant);
    }
    

    Esto debería inyectar automáticamente la propiedad tenant en el objeto createAssetDto cada vez que se llame al método create.

    Si estás experimentando problemas con la decoradora @InjectTenant y no se está llamando, es posible que quieras comprobar que se esté importando correctamente y que el método create se esté llamando con los argumentos correctos.

Comments are closed.