Nest js 독학 삽질 일기 Day 6: UPDATE 구현, CustomRepository (TypeORM 0.3 ver) 삽질 일기

Dorito·2022년 9월 20일
0

NestJS

목록 보기
6/10

CustomRepository 로 구현하기

매일 조금씩 찾아봤던건데 드디어 쓸 일이 오는구나..
https://typeorm.io/custom-repository



이전 포스팅에서 이렇게 dataSource 어딨냐고 물어봤는데, 오늘 nest js 공식문서를 찬찬히 읽어보니까 나와있었다.


// app.module.ts

import { DataSource } from 'typeorm';

@Module({
  imports: [TypeOrmModule.forRoot(), UsersModule],
})
export class AppModule {
  constructor(private dataSource: DataSource) {}
}

이렇게 하라고 나와있는데 . . .
아니 왜 안되는거지

더 구글링해봄. . .

https://stackoverflow.com/questions/71557301/how-to-workraound-this-typeorm-error-entityrepository-is-deprecated-use-repo

이 글 보고 따라해봄
dataSource에 대한 설명이 너무 불친절한 것 같다... 여기서 엄청 헤맨듯 (분명 잘 나와있는데 내가 제대로 못본거겠지만..)
그렇지만 내가 해냄!!!!

완성: Custom Repository 완성 코드 깃허브

이때 ... 또 env파일 올라갔다. 휴. 근데 어제 삽질 기록보고 바로 해결함 뿌ㅡ듯
브랜치 바꾸면.. 바뀌는건가 보다... 생각해보니 당연한건데;;
하나하나 또 바꿔야지 ..
이제 브랜치 바꿀 때마다 .gitignore 에다가 env 파일있나 없나 신경써야겠다.

Update 구현 using Custom Repository

참고 사이트
https://velog.io/@nuri00/Nest.js로-CRUD-구현하기
https://velog.io/@peter0618/NestJS-TypeORM
https://circleci.com/blog/getting-started-with-nestjs-and-automatic-testing/

저 뒤 코드 짬뽕시켜서 분석한 다음 대충 이런 식으로 짰고
문서를 보면 customRepository에서 로직 쓰고 바로 컨트롤러에서 불러오면 됨

  • board.controller.ts
  // update
  @Post('/:id')
  async updateBoard(
    @Param('id') id: string,
    @Body() boardData: UpdateBoardDto,
  ) {
    return boardRepository.updateBoard(id, boardData);
  }

서버도 잘 켜져서 아싸!! 했는데 오류남. ㅠㅠ

https://stackoverflow.com/questions/47792808/typeorm-update-item-and-return-it

Custom Repository 왜 이렇게 업뎃한걸까

너무 이상해서 nest 하는 개발자분에게 물어보니까... 구글링해보면 직접 데코레이터를 구현하던가.. 예전 typeorm 코드를 따와서 그걸로 따로 구현을 하던가... 이런 식인데 그냥 이렇게 업데이트한거보면 걍 쓰지말라는 식이라고 답변을 받았다..(여전히 확실치 않다. 대충 봐준거아님? 의심ㅎ)

의도자체가 custom repository를 쓰지마라니까, 그냥 service에서 DI하는 repository 패턴을 쓰기로 함...

왜 그런지는 custom Repository로 따로 로직 추가하는게 MVC모델에서 부합하지 않아서 그런 것 아닐까.. 하는 추측이다. (아니 그러면 공식문서에 나온건 몬데..;)
왜 버렸는지 개발자 진짜 의도는 좀 더 구글링해봐야 할 것 같다.
대충 깃허브에서 다시 살리자 토론하는 문서는 봤는데 왜 삭제인지는... 내가 잘못본건가.. 영어 지옥...

https://github.com/typeorm/typeorm/pull/8616
https://github.com/typeorm/typeorm/issues/9312 // 여기 잘 찾아보면 있을듯
내일 기록에 따로 정리하도록 하고

아무튼 일단! 오늘은 custom repository 쓰는거 포기하고 걍 우직하게 service 파일에서 레포지토리 패턴을 쓰기로 함.

하루종일 뻘짓했다 ㅠㅠ ㅠㅠ 휴..


쉽게 성공

https://www.tabnine.com/code/javascript/functions/typeorm/Repository/update
https://velog.io/@peter0618/NestJS-TypeORM

깃허브 링크

사실 Custom Repository 쓸거 아니고 단순 에러 처리 없이 CRUD처리만 하는거면... 바로 할듯
진짜 거의 대부분 시간을 며칠내내 Custom Repository 찾는다고 보냈는뎅....

내일은 에러처리 관련해서 CRUD 로직 처리해봐야지

  • 업뎃 전

body에 json 파일 넣으려는데 왜 오류

혹시나해서 봤는데 " 랑 달라서 json 오류난거엿음.. 뷁

금방 해결함 ! 확인해보니 내가 귀찮아서 json 형식 하나를 bear라는 메모장에 저장해뒀는데, 거기서 "를 쓰면 로 바꿔놓는다.

json 파일 형식인지 꼼꼼히 체크하기.

0개의 댓글