-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
typeorm 0.3.x 버전 오류
22.11.08 14:05 작성 22.12.05 08:08 수정 조회수 1.87k
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
메소드는 아래 그림과 바꿔주면 해당 메소드를 사용할 수 있게 됩니다.
답변을 작성해보세요.
답변 3