repository.ts 에서 method 를 가져 오고 싶은데, 해당 메소드가 없다고 뜨네요
398
投稿した質問数 1
현재, nestjs로 게시판 만들기를 학습 하고 있는데,
에러에, 에러에, 에러에, 에러의 연속이네요...
데이터베이스 연결이 안 되는 에러를 계속 보다가 어찌 어찌 해결은 했는데
ERROR [TypeOrmModule] Unable to connect to the database.
이젠 메소드를 찾을 수 없다는 에러가 계속 뜨네요...
뭐가 문제인 것일까요...
후우 또 열심히 검색을 해봐야겠습니다...
// board.repository.ts
import { EntityRepository, Repository } from "typeorm";
import { Board } from "./board.entity";
import { CreateBoardDto } from "./dto/create-board.dto";
import { BoardStatus } from "./board-status.enum";
@EntityRepository(Board)
export class BoardRepository extends Repository<Board> {
async createBoard(createBoardDto: CreateBoardDto) : Promise<Board> {
const { title, description } = createBoardDto;
const board = this.create({
title,
description,
status: BoardStatus.PUBLIC
})
await this.save(board);
return board;
}
}// boards.service.ts
import { Injectable, NotFoundException } from '@nestjs/common';
import { BoardStatus } from './board-status.enum';
import { CreateBoardDto } from './dto/create-board.dto';
import { InjectRepository } from '@nestjs/typeorm';
import { Board } from './board.entity';
import { Repository } from 'typeorm';
// import { BoardRepository } from './board.repository';
@Injectable()
export class BoardsService {
constructor(
@InjectRepository(Board) private boardRepository: Repository<Board>,
) {}
createBoard(createBoardDto: CreateBoardDto) : Promise<Board> {
return this.boardRepository.createBoard(createBoardDto);
}
async getBoardById(id: number): Promise <Board> {
const found = await this.boardRepository.findOne(id);
if(!found) {
throw new NotFoundException(`Can't find board with id ${id}`)
}
return found;
}
回答 1
0
안녕하세요, 인프런 AI 인턴입니다.
Min.e님, repository.ts에서 메소드를 가져오시려 할 때 해당 메소드가 없다는 에러가 발생하는 상황이네요. BoardsService에서 BoardRepository 대신 Repository<Board> 타입으로 boardRepository를 주입받고 계시기 때문에 나타나는 문제 같습니다.
BoardsService에서 createBoard 메소드를 호출할 때 BoardRepository에 선언된 createBoard 메소드를 사용하고 싶으시다면, BoardRepository를 서비스에 주입해 주셔야 합니다. 아래와 같이 BoardsService에서 BoardRepository를 주입받도록 코드를 변경해 주세요.
// boards.service.ts
import { Injectable, NotFoundException } from '@nestjs/common';
import { BoardStatus } from './board-status.enum';
import { CreateBoardDto } from './dto/create-board.dto';
import { InjectRepository } from '@nestjs/typeorm';
import { BoardRepository } from './board.repository'; // 이 부분을 추가하셨네요
@Injectable()
export class BoardsService {
constructor(
@InjectRepository(BoardRepository) private boardRepository: BoardRepository, // 변경된 부분
) {}
createBoard(createBoardDto: CreateBoardDto): Promise<Board> {
return this.boardRepository.createBoard(createBoardDto);
}
// ...기타 메소드들
}
@InjectRepository 데코레이터를 사용해 BoardRepository를 주입받아야 합니다. 이렇게 변경하신 후에 기능이 정상적으로 작동하는지 확인해 보시기 바랍니다.
TypeORM과 NestJS에 대한 추가 정보가 필요하시다면 공식 문서를 참조하시는 것도 좋은 방법입니다:
- NestJS TypeORM Integration: https://docs.nestjs.com/techniques/database
- TypeORM Repository API: https://typeorm.io/#/repository-api
도움이 필요하시다면 언제든 문의주세요. 화이팅입니다!
로거 객체 질문
0
56
1
회원가입 기능 구현 버전 변경에 따른 코드수정(해당 사항은 업데이트 예정이 없나요?)
0
71
1
파일을 찾지 못하는 오류가 계속 뜹니다
0
98
1
services와 repository 파일에서 해야하는 작업
0
120
1
커스텀 파이프에서 value의 타입이 string 이 아닐때
0
165
1
nestjs 기본 구조 설명에서 궁금한게 있습니다.
0
175
0
typeorm ^10.0.2 버전 사용시 No metadata for "BoardRepository" was found. 오류 발생 해결방법.
3
271
1
Model과 Dto의 차이점을 좀 쉽게 알수 있을까요?
0
671
1
강의 자료 관련해서 글 남깁니다.
0
477
1
"ID로 특정 게시물 가져오기" 부분이 잘못되었습니다.
0
450
1
선생님 nestjs랑 Nextjs랑 같이 연동해서 작업하는거 어떻게 생각하시나요?
0
2504
1
쌤 근데 enum 말고 type 으로 타입선언해주면안될까요?
0
609
1
pgAdmin 4에서 데이터 베이스 만들어주기 부분
0
639
1
강의 자료 관련해서 질문있습니다.
0
462
2
port 5432 failed: recived invalid response to ssl negotiation
0
765
1
컨트롤러에선 async/await 사용하지 않아도 되는 이유
1
689
1
마지막 강의 영상에서 배포 자료는 어디서 볼 수 있나요?
0
386
1
No repository for 질문
0
525
1
특정 게시물을 찾을 때 없는 경우 에러 메세지 생성 에러
0
474
1
XML파일도 링크 공유해주시면 감사하겠습니다.
0
347
1
회원가입 기능 구현 중 오류가 났습니다.
0
497
1
NotFoundException
0
708
1
도와주세요 ㅠㅠ!!
0
1081
2
auth.service.ts에서 오류가 납니다
0
960
2

