Невозможно использовать декоратор в сервисе NestJS - PullRequest
0 голосов
/ 19 апреля 2019

Почему мы не можем использовать декоратор в сервисе NestJS? Вот пример того, как я пытался сделать, но это не работает.

Декоратор: @User ()

// user.decorator.ts
import { createParamDecorator } from '@nestjs/common';

export const User = createParamDecorator((data, req): {userId, email} => {
  return data ? req.user[data] : req.user;
});

Когда я вызываю этот декоратор в службу, я получаю следующее сообщение: Невозможно разрешить подпись декоратора свойства при вызове в виде выражения

// connect.service.ts
import { Injectable, Inject } from '@nestjs/common';
import { User } from '../account/user/user.decorator';

@Injectable()
export class ConnectService {
 @User() 
 userInfo;
}

Ответы [ 2 ]

1 голос
/ 26 июня 2019

Похоже, вы пытаетесь добавить декоратор в Injectable (), я не думаю, что вы можете сделать это. Он должен быть включен в метод, чтобы при его вызове за кулисами происходило какое-то волшебство. Рассмотрите возможность использования class-validator и validationPipe Например:

@Get('vitalsByEncounterID')
async getVitalsByEncounterID(@Query() params: VitalsByEncounterPathDTO, @Headers(DFDHeaders.xRequestId) requestId: string): Promise<VitalSignsDTO[]> {}

Тогда ты украсишь класс

export class VitalsByEncounterPathDTO {
  @IsString()
  @IsNotEmpty()
  @ApiModelProperty({ required: true, description: 'iCentra id for the patient' })
  patientId: string;

  @IsString()
  @IsNotEmpty()
  @ApiModelProperty({ required: true, description: 'an encounter id for the patient' })
  encounterId: string;
}
1 голос
/ 01 мая 2019

Вы пытаетесь украсить свойство ParamDecorator, поэтому вы получаете это сообщение об ошибке.

Не могли бы вы дать более подробную информацию о вашем сценарии использования?Возможно, это поможет кому-то дать представление о том, чего вы пытаетесь достичь.

...