繁体   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);

嗨,如何使用装饰器参数注入数据。 例如,每次我调用 create function。 它会自动注入租户财产。

当我尝试它时。 它从不调用@InjectTenant 装饰器

你可以在请求中注入它,这样你就可以在任何你想要的地方获取 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;
}
);

现在在您的 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