简体   繁体   English

Nestjs - 在装饰器中注入数据

[英]Nestjs - Inject Data In Decorator

class 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);

Hi, how to inject data using decorator parameter.嗨,如何使用装饰器参数注入数据。 for example everytime I call create function.例如,每次我调用 create function。 it automatically inject tenant property.它会自动注入租户财产。

when I tried it.当我尝试它时。 it never call @InjectTenant decorator它从不调用@InjectTenant 装饰器

You can Inject it in the request so that you can get the object wherever you want to... Take a look at the following code你可以在请求中注入它,这样你就可以在任何你想要的地方获取 object... 看看下面的代码

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

now in your controller, you can access it via Req() method现在在您的 controller 中,您可以通过Req()方法访问它

@InjectTenant()
@Post('/Your-Route')
async create(@Body() createAssetDto: CreateAssetDto, @Req() req:any ) {
console.log(req.createAssetDto);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM