작성
·
1.2K
0
강의에서 나오는 버전이 달라서 생기는 문제로 일단 파악은 되었지만 인터넷등 댓글에 있는 방법으로 시도해봤지만, 저는 해결되지 않아서 질문글 남깁니다 ㅠㅠ
우선 제가 마지막으로 했던 방법은 BoardsModule 파일에서 forFeature([BoardRepository->Board로 변경하고
@Module({
imports: [TypeOrmModule.forFeature([Board])],
controllers: [BoardsController],
providers: [BoardsService, BoardRepository],
})
export class BoardsModule {}
BoardService 파일에서 @InjecRepository(BoardRepository)를 Board entity로 변경하면 된다는 글을 보고 따라했지만,
@Injectable()
export class BoardsService {
constructor(
@InjectRepository(Board)
private boardRepository: BoardRepository,
) {}
포스트맨으로 직접 실행하기전에는 서버가 잘 실행되도, 포스트맨으로 호출하면 아래와 같은 오류가 나옵니다..
[Nest] 14464 - 2023. 05. 23. 오전 12:51:47 ERROR [ExceptionsHandler] this.boardRepository.createBoard is not a function
TypeError: this.boardRepository.createBoard is not a function
at BoardsService.createBoard (C:\nestStudy\nestjs-board-app\src\boards\boards.service.ts:42:33)
at BoardsController.createBoard (C:\nestStudy\nestjs-board-app\src\boards\boards.controller.ts:27:31)
at C:\nestStudy\nestjs-board-app\node_modules\@nestjs\core\router\router-execution-context.js:38:29
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at C:\nestStudy\nestjs-board-app\node_modules\@nestjs\core\router\router-execution-context.js:46:28
at C:\nestStudy\nestjs-board-app\node_modules\@nestjs\core\router\router-proxy.js:9:17
BoardRepository가 제대로 주입되지 않은 것 같은데 이후 해결방법을 도와주세요 ㅠㅠ 삽질을 그만 멈추고 싶습니다..
답변 5
6
boards.module.ts 파일의 providers에 BoardRepository를 추가해서
providers: [BoardsService, BoardRepository],
이렇게 한번 만들어 보시겠어요?
혹시 이렇게 해도 안되면,
1. typeORM 버전을 낮춘 것은 아닌지, 낮춘 게 맞다면 package.json 파일에서, dependencies의 typeorm 부분을 "typeorm": "^0.3.17",
이렇게 바꾸시고 npm install typeorm @nestjs/typeorm --save 로 다시 설치한 뒤,
2. boards.entity.ts 파일에서
@EntityRepository(Board) 부분을 지우고, 아래와 같이 @Injectable() 데코레이터와 컨스트럭터를 추가해 주세요.
//@EntityRepository(Board)
@Injectable()
export class BoardRepository extends Repository<Board> {
constructor(dataSource: DataSource) {
super(Board, dataSource.createEntityManager());
}
board.service.ts 파일에서 클래스의 컨스트럭터 부분을 아래와 같이 수정해 보세요.
export class BoardsService {
constructor(private boardRepository: BoardRepository) {}
1
그리고 마지막으로
4. getBoardById 함수가 쓰고 있는 findOne을 아래와 같이 바꿔야 합니다.
const found = await this.boardRepository.findOne({
where: { id: id }
});
0
@CustomRepository(Board)
export class BoardRepository extends Repository<Board> {
constructor(dataSource: DataSource) {
super(Board, dataSource.createEntityManager());
}
}
레포지토리에 생성자를 명시해주세요
0
0
안녕하세요, 인프런 AI 인턴이에요.
해당 에러 메시지는 boardRepository가 createBoard라는 함수를 가지고 있지 않기 때문에 발생한 것 같습니다. 해당 함수가 정의되어 있는지 확인해보시는 것이 좋을 것 같아요.
만약 함수가 정상적으로 정의되어 있다면, 문제가 될 수 있는 부분은 해당 함수를 호출하는 코드 부분인데, 해당 부분도 확인해보시면 좋을 것 같습니다.
만약 문제가 여전히 해결되지 않는다면, 코드의 전체적인 구조나 에러 메시지의 내용을 더 자세히 설명해주시면 더 도움이 될 것 같아요.