Backend (113) 썸네일형 리스트형 FindOneOptions 안의 where 그리고 relations 단건조회 API를 작성을 했는데, 전체 조회할때 나왔던 릴레이션 관계가 나오지 않았었다. 알고보니 내가 단건조회 시 릴레이션을 잡지 않았던 것이다. 단건조회의 경우 FindOneOptions를 통해 where절을 id로 조회하는 것을 넣었었는데, 전체조회 시 적용했던 릴레이션이 없었기 때문에 릴레이션을 적용한 부분이 나오지 않았었다. 수정 전 async getOne(id:number): Promise { const options: FindOneOptions = { where: {id}, }; return this.memberRepsository.findOne(options); } 수정 후 async getOne(id:number): Promise { const options: FindOneOptions .. 회원가입때 받을 개인정보 컬럼이 달라질 것을 고려하기 위해 jsonb 사용한다? 다른 다오가 생길때 회원가입시 받아야 하는 정보가 늘어나면 컬럼도 늘어나기 마련. 그래서 jsonb로 유동적으로 받게 한다고 한다. jsonb는 그 자체로 유연한 스키마를 가지고 있다. { "age": 30, "department": "HR" } { "age":30, "department" : "HR", "location" : "NY" } jsonb 컬럼을 사용하면 이전 속성에 영향을 받지 않고 새로운 컬럼을 추가하거나 기존 속성 수정 가능 -> 다양한 프로젝트 간에 일관된 데이터를 유지하고자 할 때 유용하다. BUT 데이터의 일관성과 유지를 위해 비즈니스 로직에서 신경쓸 부분이 있다고 한다. (검증 및 처리 로직) JSONB 타입이 column에 존재한다 PostgreSQL 9.4부터 JSONB 타입이 추가되었다고 한다. (2014년경) JSON JSONB 입력받은 텍스트값을 DB에 그대로 저장한다. 그대로 저장 X JSONB와 반대 문자열 사이의 공백도 제거 + KEY 순서 보장 X JSONB와 반대 JSONB가 JSON보다 좀 더 많은 디스크를 사용한다(Always는 아님) Indexing 불가능 Indexing 가능 ※ 특별한 사유가 없으면 JSONB를 사용하라고 하는데 아직은 잘 와닿지 않는다 ㅜ Data Insert시 JSON > JSONB Data 처리 JSON < JSONB (바이너리 형태) 예를 들어 member 라는 테이블이 존재할때 JSONB로 정의된 'signup_info'라는 컬럼이 있다고 하자. JSONB 타입에 JSON을 보통 다.. relation 그리고 연관관계 잡기 내가 현재 기준점을 잡은 entity의 이름을 A라고 하자. A와 B entity는 서로 일대일 관계이고, B와 C는 일대다 관계였다. 이런 상황에서 A->C로 바로 참조할 수 있는 방법이 있나?라고 고민하던 중에 내가 처음으로 시도하던 방법은 relation에 2개의 테이블 이름을 넣는 것이었다. const result = await this.memberRepository.find({ relations: ['B','C'], }); 결과값이 원하는 대로 나오긴 했지만, 이는 올바른 방법이 아니다. 왜일까? 만약 A에서 중구난방으로 떨어진 테이블을 참조하려고 하면 그 관계가 끝도 없이 파야 나올텐데, 내가 했던 방법은 올바르지 않은 것이다. 이럴 때에는 참조하는 테이블을 잘 명시해주어야 한다. 수정한 내용.. fidOne()과 FindOneOptions 객체 기존 코드 async getOne(id: number): Promise { return this.memberRepository.findOne(id); // id만 전달 } findOne(id)로 했었는데 아래와 같은 에러가 발생하였다. Argument type number is not assignable to parameter type FindOneOptions id가 들어가는 인자부분에서 에러가 난 것이었다. 이를 해결하기 위해 일단 체크해야 할 점 - findOne() 함수에 전달되는 파라미터는 검색할 레코드의 식별자(ex. primary key)이다. 숫자 혹은 문자열과 같은 식별자를 전달하면 해당 레코드를 찾아 반환한다. member db에서 id가 PK로 잡혀있었기에 뭐가 문제지?싶었다. 사용해.. Cannot GET /v1/party-member/2 에러해결 조회 API를 만들기 위해 간단한 테스트 데이터를 넣고 로직을 짰었다. controller와 service랑 연관을 잘 지었다고 생각했지만..? 계속해서 404 에러가 발생했었다. 404 에러가 발생했던 이유에 대해서 생각했던 점은 다음과 같다. 1) Dev DB에 dummy(test) data가 없어서 -> 추가 그런데 Dev DB에 데이터를 추가했어도 계속해서 404 에러가 발생했던 것이었다. { "statusCode": 404, "timestamp": "2023-08-18T03:08:25.690Z", "path": "/v1/party-member/2", "message": "Cannot GET /v1/party-member/2" } 내가 작성했던 Controller.ts는 다음과 같다. @Get().. Nestjs 프로젝트 생성하며 알게된점 (package.json 내부의 모듈역할, dependencies 그리고 devDependencies) NestJS로 어찌저찌 일을 하고는 있지만, 사실 부족한 개념들이 많은 것 같다. 퇴근하고 NestJS 강의를 들으며 새로 알게된 사실들이 있어서 정리하고자 한다. 기존에는 신경을 쓰지 않았던 것들이다. 1) 터미널에서 nestjs의 특정 모듈, 타입스크립트 특정 버전을 명시하여 설치할 수 있다. npm install @nestjs/common@7.6.17 @nestjs/core@7.6.17 @nestjs/platform-express@7.6.17 reflect-metadata@0.1.13 typescript@4.3.2 2) package.json에서 보이는 NEST 관련 모듈들의 역할 "dependencies": { "@nestjs/common": "^10.0.0", "@nestjs/core": "^1.. winston이란? (package.json에 nest-winston 모듈 있는데 모듈 없다고 에러뜸 해결) winston 모듈이 없다고 뜨길래 package.json 파일을 살펴보니 dependencies에 잘 깔려만 있었다. "nest-winston": "^1.9.3", 그런데 왜 인식을 하지 못했던걸까? 합리적 의심 1 : package.json 파일에 해당 라이브러리가 명시되어있지만, 실제로 해당 라이브러리가 설치되지 않았을 수도 있음 -> 프로젝트 터미널에서 npm install OR yarn install로 의존성 설치 합리적 의심 2 : 프로젝트에 설치된 다른 라이브러리나 패키지와의 버전 충돌 -> 의존성 버전 조정 OR npm ls OR yarn list를 통해 의존성 트리 확인 합리적 의심 3 : 빌드과정에 없음 -> 빌드 스크립트가 모듈을 포함하고 있는지 확인 합리적 의심 4 : 캐싱 문제 -.. Module '"nestjs-typeorm-paginate"' has no exported member 'IPaginationOptions'. 팀원이 모듈을 설정한 부분이 있었다. 나는 develop 브랜치를 update 해왔는데 위와 같은 에러가 발생하고 있었다. V 체크해볼 부분 - 해당 프로젝트는 npm으로 설치가 되어있었던 터라 node_modules 파일이 있었다. - .gitignore 파일을 보면 /dist와 /node_modules 파일이 컴파일에서 제외되다보니 팀원이 설치한 라이브러리에 대해서 같이 가져올 수 없었다. V 해결방법 터미널에서 yarn install을 통해 그동안 안깔렸던 여러 모듈들을 깔아주었다. 또한 yarn install 하기 전 제목과 같은 에러가 발생하였을때 import { IPaginationMeta, IPaginationOptions } from 'nestjs-typeorm-paginate'; IPag.. zsh: command not found: nest 해결방법 맥북 터미널을 이용해 프로젝트 경로에서 프로젝트를 생성하려고 하니 자꾸 아래와 같은 에러가 떴다. 난 Nest 다 설치해서 쓰고 있었고, node와 npm 둘다 설치해서 쓰고 있는데 뭐가 문제인가..! zsh: command not found: nest 계속해서 시도해본 방법은 다음과 같다. 1) 아래의 명령어를 입력하면 에러가 뜬다. 프로젝트 경로이름 npm install -g @nestjs/cli npm notice Beginning October 4, 2021, all connections to the npm registry - including for package installation - must use TLS 1.2 or higher. You are currently using plainte.. 이전 1 2 3 4 5 6 7 8 ··· 12 다음