Open apeltop opened 7 months ago
우선 과제를 진행하시느라 너무 고생하셨습니다. AWS S3 와 소수점을 이용한 정렬 등 여러 기능을 완성도 있게 구현을 해주신 부분이 인상 깊습니다. 그러나 몇 가지 개선사항들이 있으니 참고해서 최종 프로젝트 때 더 좋은 품질이 나올 수 있으면 좋겠습니다.
User Entity 에 email index 를 사용하신 부분 너무 좋네요!
package.json 을 보면 @types/~ 가 dev 에 있지 않은 경우가 있습니다. @types/~ 의 경우 dev 의존성에만 있어야합니다!
softDelete 라서 PATCH 메서드를 사용하신 것 같은데 이것은 서버 내부의 일이기 때문에 DELETE 로 하는 것이 맞습니다. 왜냐하면 Soft Delete 처리가 되어도 사용자 조회 결과는 나오지 않아야하기 때문입니다.
@Patch('unregister') // softDelete라서 @Delete X @UseGuards(AuthGuard('jwt')) async unregister( @Body() unregisterDto: UnregisterDto, @UserInfo() user: User, ) { await this.userService.unregister(unregisterDto, user.id); }
user.service 코드를 보면 사용하지 않는 메서드가 많은데 사용하지 않으면 삭제하시는 것이 좋습니다!
아래와 같은 코드가 있을 때 뒤에 path 만 달라지기 때문에 변수 또는 함수를 통해 한 곳에서 host 와 port 가 담겨있는 문자열을 사용하시는 것이 좋습니다.
const url = `http://${this.config.get('HOST')}:${this.config.get('PORT')}/users/email-verify?signupVerifyToken=${token}`;
const url = `http://${this.config.get('HOST')}:${this.config.get('PORT')}/boards/accept/${token}`;
댓글을 작성하기 위한 URI 를 보면 /boards/:boardId/cards/:cardId 가 되는데 이 URI 에서 comments 라는 정보는 없습니다. URI 를 다시 한 번 고민해보세요!
@Controller('boards/:boardId/cards') export class CommentController { constructor(private readonly commentService: CommentService) {} //댓글 작성 @Roles(BoardRole.OWNER, BoardRole.WORKER) @Post('/:cardId') async createComments( @UserInfo() user: User, @Param('cardId') cardId: number, @Body() createCommentDto: CreateCommentDto, ) { return await this.commentService.createComment( user, cardId, createCommentDto, ); } }
Comment Entity 에 created_At 이라는 속성을 사용하도록 선언하셨는데 A 가 대문자인데 일관성이 중요합니다!
@CreateDateColumn() created_At: Date;
board.service 에 있는 함수입니다. boardList 라는 함수를 보면 카드의 위치를 계산하고 반환하는 것으로 보이는데 이를 반영하지 않은 함수명입니다. 함수명은 함수가 무엇을 하는지 의미를 나타내야합니다.
async boardList(boards: Columns[], procedure: number) {
board.controller 에서 초대 코드를 보면 URI 가 /boards/invite/:boardId 가 됩니다. 자원(boards) 뒤에는 자원 ID 가 나와야합니다. 그러므로 순서가 잘못되었습니다. 개선해보시면 좋을 것 같습니다.
@Post('/invite/:boardId')
this.boardService.acceptInvitation(token); 는 비동기 함수인데 비동기 처리를 해주지 않고 있습니다.
@Post('/accept/:token') acceptInvitation(@Param('token') token: string) { this.boardService.acceptInvitation(token); }
aws.service 에 있는 함수인데 함수명은 소문자로 시작해야합니다.
async DeleteUploadToS3(fileName: string) {
최종 프로젝트 화이팅입니다!!
피드백 감사합니다~~~!!
감사합니다!
참고해서 개선해보겠습니다 감사합니다!!
우선 과제를 진행하시느라 너무 고생하셨습니다. AWS S3 와 소수점을 이용한 정렬 등 여러 기능을 완성도 있게 구현을 해주신 부분이 인상 깊습니다. 그러나 몇 가지 개선사항들이 있으니 참고해서 최종 프로젝트 때 더 좋은 품질이 나올 수 있으면 좋겠습니다.
User Entity 에 email index 를 사용하신 부분 너무 좋네요!
package.json 을 보면 @types/~ 가 dev 에 있지 않은 경우가 있습니다. @types/~ 의 경우 dev 의존성에만 있어야합니다!
softDelete 라서 PATCH 메서드를 사용하신 것 같은데 이것은 서버 내부의 일이기 때문에 DELETE 로 하는 것이 맞습니다. 왜냐하면 Soft Delete 처리가 되어도 사용자 조회 결과는 나오지 않아야하기 때문입니다.
user.service 코드를 보면 사용하지 않는 메서드가 많은데 사용하지 않으면 삭제하시는 것이 좋습니다!
아래와 같은 코드가 있을 때 뒤에 path 만 달라지기 때문에 변수 또는 함수를 통해 한 곳에서 host 와 port 가 담겨있는 문자열을 사용하시는 것이 좋습니다.
댓글을 작성하기 위한 URI 를 보면 /boards/:boardId/cards/:cardId 가 되는데 이 URI 에서 comments 라는 정보는 없습니다. URI 를 다시 한 번 고민해보세요!
Comment Entity 에 created_At 이라는 속성을 사용하도록 선언하셨는데 A 가 대문자인데 일관성이 중요합니다!
board.service 에 있는 함수입니다. boardList 라는 함수를 보면 카드의 위치를 계산하고 반환하는 것으로 보이는데 이를 반영하지 않은 함수명입니다. 함수명은 함수가 무엇을 하는지 의미를 나타내야합니다.
board.controller 에서 초대 코드를 보면 URI 가 /boards/invite/:boardId 가 됩니다. 자원(boards) 뒤에는 자원 ID 가 나와야합니다. 그러므로 순서가 잘못되었습니다. 개선해보시면 좋을 것 같습니다.
this.boardService.acceptInvitation(token); 는 비동기 함수인데 비동기 처리를 해주지 않고 있습니다.
aws.service 에 있는 함수인데 함수명은 소문자로 시작해야합니다.
최종 프로젝트 화이팅입니다!!