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.
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étodocreateParamDecorator
de NestJS. Esta función decoradora toma dos parámetros –data
yctx
– y devuelve una versión modificada del objetocreateAssetDto
con una propiedadtenant
establecida en un nuevo objetoTenant
.Para utilizar esta función decoradora para inyectar datos en el método
create
, debes decorar el parámetrocreateAssetDto
del método con la decoradora@InjectTenant
, de la siguiente manera:Esto debería inyectar automáticamente la propiedad
tenant
en el objetocreateAssetDto
cada vez que se llame al métodocreate
.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étodocreate
se esté llamando con los argumentos correctos.