우당탕탕 백엔드 입문기록(번외) - 저는 모르겠어요(일하는 중)

const job = '프론트엔드';·2024년 11월 28일
2

nest

목록 보기
3/4

나의 Nest 지식 수준
1. 3일 동안 기존 프로젝트 및 신규 프로젝트(내가 해야 할) 구조를 봤음
2. 이해가 안되는 부분 검색해서 블로그 찾아봄
3. 공식문서도 정독하면서 겨우 겨우 신규 프로젝트 구조를 파악
4. 유툽 강의를 들으면서 신기한 기능도 발견
5. 혼자 실습하면서 프로젝트 생성 - 단지 컨트롤러에서 api 만들고(서비스 이런거 아무것도 모르는 상태), 썬더클라이언트로 확인까지만 해봄

🐣일단 시키니까 맨땅에 헤딩🐣

나의 문제점 파악하기👍🏼

1. 회사 프로젝트 구조(기본)

module - controller - service의 기본구조

2. dto
  • respose
    응답시 필요한 api property를 정의하는 곳인가?
  • request
    요청시 필요한 api property를 정의하는 곳인가?
3. entities
  • 본격 DB와 연동해주는 부분인가?
  • DB 정의도 해줌
4. repositories
  • DB 쿼리를 작성해주는 곳인가?

🔒종합)

컨트롤러에서는 어떤 방식으로 데이터를 요청할 것인지 정하고, 어떤 값으로 반환받을 것인지 정의하는 중(서비스에서 받아온 함수를 뿌려줄 예정)

서비스에서 데이터를 받아올 함수를 정의하고 있음
1) 비동기 함수가 실행하고, 성공하면 dto에 정의된 부분을 반환
2) 일단 데이터 조회하는데 reposities에 있는 메서드를 호출, 호출하는 메서드에는 entities에 있는 데이터를 조회하게 되어있음

🔐진짜 종합) 내가 이해하는건

  • 컨트롤러에서 api 요청과 결과값을 도와주는 것이 서비스
  • 서비스에서 데이터를 조회하게 도와주는 것이 repositories
  • 그런 repository에서 조회할 데이터를 정의한 곳이 entities
  • 이 과정을 거친 서비스가 함수 실행에 성공하면 보여줄 데이터가 dto

이 정도로 이해하고 있는데,
아니?🙂‍↔️ 이해하려고 노력하고 있음

(지금부터 평정성 잃음 주의🥹)

난 진쨔 정말 모르겠어.
실행해봤거든?

npm run start:dev

근데 module에서 오류가 나는거야. 일단 무서워 빨갛잖아?

그래서 내가 만든 API가 제대로 된건지 확인도 못해봤어.
분명히 혼자 집에서 실습할때는 재밌었거든?

그냥 리액트만 하게 해달라고 간절하게 부탁해볼까?🫸
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

내가 파악한 나의 문제점 회고

  • 구조를 대충 이해하고 있음
  • module에서 imports, exports, providers의 기능을 제대로가 아니라 아예 이해 못하고 있음
  • 공통 모듈(선임님이 만들어준)의 역할과 기능도 모름

일단 해결했음

원인 1. module파일에서 꼬임
원인 2. repository에서 꼬임

애초에 우리는 EntityManager방식으로 세팅이 되어있었는데, 나는 계속 repository형식으로 코드를 만들고 있었던 것임.

import * as Repositories from '../repositories/total-repository.index';

@Module({
  imports: [,
  providers: [ ...Object.values(Repositories)],
  controllers: [],
})

이런식으로 불러오는 것이었음!
🔅핵심은 providers에서 repository를 인식하지 못하는게 문제였고, 그걸 인식하게 세팅을 한 것임!

이제, 짠! 하고 만들어둔 api가 나올줄 알았음

그런데,

❌500에러가 발생했고, No medatata for ...어쩌고

이번엔 entity를 인식하지 못하는 오류
구글링을 했더니

  • typeorm 버전을 낮춰서 해결했다는 사람(하지만 다른 get방식으로 요청한 데이터는 잘 나옴)
  • moodule에 imports에서 제대로 해당 entity를 추가해주지 않아서 추가 했다는 사람(나는 몹시 잘 추가 되어있음)
  • config에서 entities 설정의 문제일거란 사람❗️ - 이게 가장 유력했다.

🔖문제 인식에 가장 key paper가 된 블로그
https://blockprogram.tistory.com/entry/Nestjs-TypeORM-EntityMetadataNotFoundError

그래서 GPT에 도움으로

❌entities: [__dirname + '/../**/*.entity{.js,.ts}'],

이렇게 추가했다. 그랬더니 안된다.
그리고 우리는 total-entity.index.ts로 공통으로 모아서 관리하고 있으니 혹시 index를 추가해줘야 하는게 아닐까? 하고

❌entities: [__dirname + '/../**/*.entity.index.{.js,.ts}'],

이렇게 해보았다.
그렇지만 해결되지 않았다. 그래서 선임님한테 조용히가서

'도와주세요...'했다

  1. maria.config에서의 entities
entities: Object.values(Entities),
  1. database.module에서의 entities
entities: [__dirname + '/../**/*.entity{.ts,.js}'],

아무튼 typeorm 형식의 문제였다. 이렇게 하고! 요청을 해보니깐

혹시 천재세요?

✨오늘의 나. 스웨거 업데이트 하는 프론트엔드 어떤데? 좀 멋지잖아?🌟

profile
`나는 ${job} 개발자`

0개의 댓글