본문 바로가기

Backend/PostgreSQL and TypeORM

nullable 에러 해결 -> ValueTransformer

  @Column({ nullable: true, transformer: new BcryptTransformer() })
  ci: string;

 

위의 코드의 nullable에서 아래와 같은 에러가 계속 발생하였다. 왜일까? 

 

내가 만든 BcryptTransformer에서 Partial로 ValueTransformer을 implements해서 사용하고 있어서

ValueTransformer 내부에 구현되어있던 from, to 메소드에서 to 메소드만 쓰고 싶었기에 Partial type 사용을 했었다. 

근데 nullable에서 에러가 났다. 

 

알고보니 Partial Type으로 ValueTransformer을 사용하더라도 그 안에 있는 형식은 맞춰서 써줘야 한다는 것이다. 

그래서 from 메소드를 형식적으로 구현해주니 nullable : true에서 발생하는 위의 에러가 해결되었다. 

 

export class BcryptTransformer implements Partial<ValueTransformer> {
  async to(ci: string): Promise<string> {
    if (!ci) {
      return null;
    }

    const hashedCi = await hash(ci);

    return hashedCi;
  }

  async from(ci: string): Promise<string> {
    if (!ci) {
      return null;
    }
    return ci;
  }
}