기본적인 CRUD라고 생각했지만, 그것은 코더일 때이었다고 생각한다. API Docs를 체크 하던중 CRUD 중 U:update 를 빠뜨렸다는 것을 알았다. 촤하하..그렇게 update를 펼쳐 보니 이거 다시 출발점으로 갔다.
update는 기본적으로 ID를 명시하는 것으로 시작했다.
1. ID 값으로 존재하는 게시물을 찾는다.
있으면 그 데이터 위에 update할 데이터를 덮어 씌운다.
1번부터 막혔는데 우선 ID값이 유효한지부터 검증 해야 했다. 그런데 수업에서 배울 때, findOne을 찾는 방식이 조금씩 달라서 헷갈렸다.
...findOne({id : id})
...findOne({where :{id : id}})
위 2가지 결과는 똑같이 나오는데 인터넷에서 찾아봐도 뚜렷히 차이점은 나오지 않았다. 페어분 얘기로는 where를 이용하니깐 오류가 났던게 안났다고 했었던 것 같다고 하였다.
우선, nestjs Docs는 자세하게 나와있지 않은듯 했다. TECHNIQUES>Database에서 찾아봤는데 없는것 같았다(당연한 이유일수도 있지만 영문이라 '같았다'라는 표현을 한다.)
다음으로는 TypeORM Docs를 찾아보니 애매한 문구가 적혀 있었다.
//findOne() signature without parameters was dropped...
//findOne(id) signature was dropped. Use following syntax instead:
const user = await userRepository.findOneBy({
id: id // where id is your column name
})
//This change was made to provide a more type-safe approach for data querying.
갑자기 findOneBy~라는 것이 나와 상당히 당황했는데, 찬찬히 다시 읽어보니 MongoDB driver일 때라고해서 삽질이 아닌가 싶었다.
그리고 나중에 CRUD를 queryBuilder로 리팩토링 하기로 페어분과 논의 하였다.
querybuilder의 장점은 더 세밀하게 쿼리를 조정할 수 있다는 장점이 있다고 한다. TypeORM Docs에서 좀더 찾아 볼 수 있었고, 후에 더 공부가 필요 할 것이다.
createInputType은 여러 @args 입력하는 번거로움 때문에 등장했다고 생각한다.
dto (Data Transfer Object)를 만들 때 Entity를 확장 할 수 있도록 nestjs에서 지원 한다고 한다. 확장 할 때 create와 다르게 부분적으로 입력해도 객체를 생성할 수 있도록 partial type을 설정 할 수 있었다. (물론 다시 알아봤다.)
일전에 미리 완성된 기능을 프론트분들이 사용할 수 있게, 그리고 나중에 수고를 덜기 위해서 kubernetes를 사용해서 중간 배포를 미리 하였다. 그러다 점심에 잘 되던 접속이 안되었다. 비용 문제로 vm인스턴스를 값싼 램을 선택해서 그랬다고 생각했다. 한 사람은 접속이 되고, 다른 한 사람은 안되는 일이 무슨일인지 설명할 수 없었다.
결론적으로는 kuber를 통한 배포는 잠시 접어 두고, vm내에서 git을 pull 받아 docker를 돌리는 방식으로 마무리 지었다. 아마도 중간에 GCP에서 vm인스턴스 램 향상이라는 버튼을 눌러서 그런지...로그에서 에러를 확인하였지만 무슨 에러인지 감도 못잡고 다른 vm인스턴스를 만들어 중간 배포를 급하게 했다.ㅠ.
[[NestJS][GraphQL] mapped-types 정리, Tunko Development Diary, 2022년05월16일 접속]
https://huniroom.tistory.com/entry/NestJSGraphQL-mapped-types-%EC%A0%95%EB%A6%AC
[https://typeorm.io/, TypeORM, 2022년05월17일 접속]
https://typeorm.io/
[[DAO] DAO, DTO, Entity Class의 차이, https://gmlwjd9405.github.io/, 2022년05월17일 접속]
https://gmlwjd9405.github.io/2018/12/25/difference-dao-dto-entity.html