작성
·
2.2K
·
수정됨
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
파일을 생성합니다.
해당 링크가 문제가 될 시 링크 바로 삭제하도록 하겠습니다 ㅠ..
entities
를 불러오기 위해 경로 또는 저희가 설정한 entitiy
를 바로 집어 넣었습니다.
autoLoadEntities: true
- entities를 빼고 해당 옵션을 넣어서 자동으로 불러올 수도 있습니다. (본인이 직접 컨트롤 하는 것이 아니기 때문에 부정확해질 수도 있음.)
저희 repository에 @EntityRepository
대신 CustomRepository(Board)
을 넣어줍니다.
imports는 custom Repository를 불러와야 하기 때문에, 저희가 만든 TypeOrmExModule class의 forCustomRepository에 저희 Repository를 넣어줍니다.
기존에 @EntityRepository
를 사용한 경우 @InjectRepository
데코레이터를 사용했지만 해당 부분을 유지하면 오류가 발생한다고 합니다.
따라서 @CustomRepository
를 생성하여 사용하는 경우 @InjectRepository
를 제거하고 사용합니다.
이러면 아직 findOne
메소드의 id는 빨간줄인데
findOne 메소드는 options
로 FindOneOptions Parameter를 받게 되어 있고
해당 FindOneOptions
중 저희가 사용할 것은 where
옵션을 사용해야 해당 id
를 통해 데이터를 불러올 수 있습니다.
그래서 최종적으로 findOne
메소드는 아래 그림과 바꿔주면 해당 메소드를 사용할 수 있게 됩니다.