인프런 커뮤니티 질문&답변
typeorm 0.3.x 버전 오류
작성
·
2.3K
·
수정됨
11
많은 분들이 남겨준 것처럼 typeorm 0.3.x 버전 오류로 인해 저도 조금 고생했습니다.
공식문서 참조하며 해결했습니다.
https://docs.nestjs.com/techniques/database#repository-pattern
typeorm 0.3.x 버전은 @EntityRepository 가 deprecated 됐기 때문에 custom Repository를 생성해주었습니다. custom Repository 생성은 아래 블로그를 참조했습니다.
https://velog.io/@pk3669/typeorm-0.3.x-EntityRepository-%EB%8F%8C%EB%A0%A4%EC%A4%98
위 링크 내용을 참조로
typeorm-ex.decorator.ts파일과typeorm-ex.module.ts파일을 생성합니다.해당 링크가 문제가 될 시 링크 바로 삭제하도록 하겠습니다 ㅠ..
typeorm.config.ts

entities를 불러오기 위해 경로 또는 저희가 설정한entitiy를 바로 집어 넣었습니다.autoLoadEntities: true- entities를 빼고 해당 옵션을 넣어서 자동으로 불러올 수도 있습니다. (본인이 직접 컨트롤 하는 것이 아니기 때문에 부정확해질 수도 있음.)
board.repository.ts

저희 repository에
@EntityRepository대신CustomRepository(Board)을 넣어줍니다.
board.module.ts

imports는 custom Repository를 불러와야 하기 때문에, 저희가 만든 TypeOrmExModule class의 forCustomRepository에 저희 Repository를 넣어줍니다.
board.service.ts

기존에
@EntityRepository를 사용한 경우@InjectRepository데코레이터를 사용했지만 해당 부분을 유지하면 오류가 발생한다고 합니다.따라서
@CustomRepository를 생성하여 사용하는 경우@InjectRepository를 제거하고 사용합니다.이러면 아직
findOne메소드의 id는 빨간줄인데
findOne 메소드는
options로 FindOneOptions Parameter를 받게 되어 있고
해당
FindOneOptions중 저희가 사용할 것은where옵션을 사용해야 해당id를 통해 데이터를 불러올 수 있습니다.
그래서 최종적으로
findOne메소드는 아래 그림과 바꿔주면 해당 메소드를 사용할 수 있게 됩니다.





