* service
async createBoard(createBoardDto : CreateBoardDto): Promise<Board>{
const {title,description} = createBoardDto;
//db생성시 .create 이용해야
const board = this.boardRepository.create({
// id : uuid(), //자동으로 유니크한 값을 넣어줌
title : title,
description : description,
status : BoardStatus.PUBLIC
})
await this.boardRepository.save(board);
return board;
}
* controller
@Post()
@UsePipes(ValidationPipe)
createBoard(@Body() createBoardDto : CreateBoardDto) : Promise<Board> {
return this.boardsService.createBoard(createBoardDto);
}
* db 관련은 repository로 이동
controller에서 service 호출
service에서는 repository를 호출
@EntityRepository() //Board를 컨트롤하는 db임을 선언
export class BoardRepository extends Repository<Board>{
async getBoardById(id): Promise <Board>{
const found = await this.findOne(id);
if(!found){
throw new NotFoundException(`Can\`t find Board with id ${id}`);
}
return found;
}
async createBoard(createBoardDto : CreateBoardDto): Promise<Board>{
const {title,description} = createBoardDto;
//db생성시 .create 이용해야
const board = this.create({
// id : uuid(), //자동으로 유니크한 값을 넣어줌
title : title,
description : description,
status : BoardStatus.PUBLIC
})
await this.save(board);
return board;
}
}
* typeOrm 3.0 issued
문제 : repository.create not found error
원인 : ?
해결 : 3.0으로 원복 && repository.ts에서 @entityrepository 대신 @ injectable 사용 && 생성자 명시
* 인프런 복붙
1
2023. 09. 03. 16:55
그리고 마지막으로
4. getBoardById 함수가 쓰고 있는 findOne을 아래와 같이 바꿔야 합니다.
const found = await this.boardRepository.findOne({
where: { id: id }
});
'JS > Nest.js' 카테고리의 다른 글
[Nest JS] 게시글 업데이트 (0) | 2024.08.18 |
---|---|
[Nest JS] 게시글 삭제 (0) | 2024.08.18 |
[Nest JS] memory repository 2 DB repository / 게시글 조회 / (0) | 2024.08.17 |
[Nest JS] Repository 구현 / @EntityRepository issue (0) | 2024.08.17 |
[Nest JS] Postgres SQL 설치, type ORM, 엔티티(테이블) 생성 (0) | 2024.08.17 |
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() 데코레이터와 컨스트럭터를 추가해 주세요.