이전에 DB 대신 메모리를 이용했을 때 사용하는 코드는 이제 DB 덕에 필요 없어짐. 새로 작성해 줘야 함.
board.model.ts
에서 interface Board 는 이제 entity 가 있으므로 지워도 됨.constructor(
@InjectRepository(BoardRepository)
private boardRepository: BoardRepository,
) {}
getBoardById
=> TypeOrm에서 제공하는 findOne 메소드 이용
=> async await을 이용해서 DB작업이 끝난후 결과값을 리턴하도록
board.service.ts
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;
}
2022년 3월 30일 기준으로,
this.boardsRepository.findOne( id );
위와 같이 입력을 했는데 에러가 발생했다면, 해당 부분을 다음의 코드로 교체해서 해결할 수 있습니다.
this.boardsRepository.fineOneBy({ id });
async getBoardById(id: number): Promise<Board> {
const found = await this.boardRepository.findOneBy({ id });
if (!found) {
throw new NotFoundException(`Can't find Board with id ${id}`);
}
return found;
}
board.controller.ts
@Get('/:id')
getBoardById(@Param('id') id: number): Promise<Board> {
return this.boardsService.getBoardById(id);
}
board.service.ts
async createBoard(createBoardDto: CreateBoardDto): Promise<Board> {
const { title, description } = createBoardDto;
const board = this.boardRepository.create({
title,
description,
status: BoardStatus.PUBLIC,
});
await this.boardRepository.save(board);
return board;
}
board.controller.ts
@Post()
@UsePipes(ValidationPipe)
createBoard(@Body() createBoardDto: CreateBoardDto): Promise<Board> {
return this.boardsService.createBoard(createBoardDto);
}
서비스의 DB관련 코드를 리포지토리로 옮겨주기!
board.service.ts
constructor(
@InjectRepository(Board)
private boardRepository: BoardRepository,
) {}
createBoard(createBoardDto: CreateBoardDto): Promise<Board> {
return this.boardRepository.createBoard(createBoardDto);
}
TypeError: this.boardRepository.createBoard is not a function 발생
constructor(private readonly boardRepository: BoardRepository) {}
createBoard(createBoardDto: CreateBoardDto): Promise<Board> {
return this.boardRepository.createBoard(createBoardDto);
}
board.repository.ts
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;
}
board.service.ts
board.controller.ts
board.service.ts
board.controller.ts