TiL#26. 5차 과제 1일차

깡통·2024년 1월 30일
0

<진척상황>
1. ERD 완료
2. API 명세서 작성 90% 완료
3. schema.prisma 작성 완료

<알게된 점>
1. remote repository에서 수정한 사항을 local repository에 반영할 때도 commit 과정이 필요하다, 이거 안하면 매우 피곤해질 수 있음.

<현재 진행 중인 상황>

  • ./prisma/schema.prisma

-부모 vs 자식 관계 관련 지식

  • 의미: UserId 하나는 UserInfos 모델을 1개, 혹은 0개 가질 수 있다.
    • Users의 UserId가 UserInfos를 가지는 건 optional이라 ?가 붙는다.
    • UserInfos는 Users의 UserId를 반드시 가져야 하기 때문에 데이터형에 ?가 붙지 않았다.
  • 오답노트
  • 'int, varchar()' 아님 Int(앞자리 대문자), String임
  • 'resume Resume[]?' 는 잘못된 문법임 'resume Resume[]'로 표현하고, 자식 모델인 Resume의 연결된 외래키 데이터형에 ?를 추가해야 함(?)
  • 부모 모델하고 연결된 자식 모델에 데이터가 없더라도 부모 모델은 영향을 받지 않음.

  • 잘못된 Enum 문법임
  • 수정
  • enum 문법은 enum으로 선택될 애들을 모아서 model 처럼 enum 생성자 객체(?) 안에 집어 넣어야 함(""없음)
  • 그리고 객체 이름을 enum을 적용하고 싶은 필드의 데이터형에 기입하면 댐
  • 그리고 @relation(field: [])가 아니라 @relation(field"s":[])임... 제발 그만좀 틀려라
  • @db.text아님, @db.Text임

  • ./src/app.js
  • app.router 를 쓰면 depricated라는 에러가 뜬다.
  • app.use 써야 함
  • 따라서 router 미들웨어를 쓸 일이 없고, const router= express.Router()도 필요 없음

-1차 수정 후

  • app.use(express()); = 웹어플리케이션 제작이라는 본래 목적에 필요한 설정과 미들웨어 등을 활성화 하는 코드

    • 근데 const app = express(); 로 인해 상수 app을 선언하면서 express()가 활성화 되어서 필요없음(다음 이미지 부터 없을 거임)
  • app.use(express.json()) = 바디파서;

  • 2차 수정 후

    • PORT번호를 env로 숨김처리함

  • /src/utils/prisma/index.js

  • @prisma/client모듈에서 내가 구축해둔 prisma schema를 저장하고 있는 {PrismaClient}로 객체분해할당을 해 import함

  • import한 prisma schema로 생성자 함수를 만듦

  • log랑 errorFormat은 관련 기록이나 에러 출력용인데, 아직 메커니즘은 잘 이해가 안됨

    • 아마도 내가 인스턴스, 프로토타입, 클래스 등에 대한 이해가 부족한 듯함

  • ./src/routes/users.router.js

  • express 모듈 기본 사항 활성화는 보통 메인모듈에서만 하면 된다고 함, 다음 수정본 부터 삭제돼있을 예정(const app = express();)

  • 현황(2024.01.30 17:00pm)

  • 이런 에러가 발생하였음

  • 1차 수정

  • email, password, name, passwordCheck를 각각 'data' key의 property value로 넣음

  • 위의 에러는 해결됨

  • 그리고 새로운 에러가 출몰함

  • 딱히 건드린 건 없는데 해결됐다. 회원가입API 구현됐고, 실행 되는 것도 확인했다.

  • 그런데 여기서 생긴 궁금증! user 모델 인스턴스가 성공적으로 생성된 뒤에야 userInfos모델이 생성될 수 있다. 그런데 userInfos는 userId가 없으면 생성이 불가능한데, 둘다 비동기잖아? 그러면 userInfos의 userId는 null이 돼서 에러가 떠야 하는거 아닌가?

  • 갑자기 생각난건데, '비동기의 동기화' 개념에서 async/await은 promise/then의 return 부분을 const나 let 선언문으로 받아서 처리하잖아, 혹시 이건가? 그니까 어차피 userInfos 생성 부분은 userId가 생성되기 전에는 활성화가 불가능하니,userId가 생성될 때까지 기다리도록 내부 로직이 만들어져 있는거지.

  • 이 다음은 2일차에 기록하겠음(나중에 한 번 싹 정리해야지)

profile
코딩하러 온 사람입니다.

0개의 댓글