jwt service에서 sign 메서드 사용시 에러 발생
// JwtAdapter.ts
this.jwtService.sign(payload);
에러 메세지: Expected "payload" to be a plain object.
// @nestjs/jwt
sign(payload: string | Buffer | object, options?: JwtSignOptions): string;
위 코드에 나온 것처럼 sign 메서드는 string, buffer, object를 입력으로 받는다.
그런데 프로젝트를 class 기반 코드를 작성하다보니 클래스의 인스턴스를 입력으로 집어넣었기 때문에 에러가 발생했다.
Payload 클래스에 instanceToPlain 메서드를 새로 만들어 객체 리터럴로 변경하여 input으로 사용
// Payload.ts
export class Payload {
...
public instanceToPlain() {
// class-transformer 제공 메서드 사용
return instanceToPlain(this);
}
}
// JwtAdapter.ts
this.jwtService.sign(payload.instanceToPlain());