TIL 34일차 (20240213)

박세연·2024년 2월 13일

TIL

목록 보기
29/70


오늘 한 일은 댓글 CRUD 생성! 연휴동안 쉬고 와서 그런가 초반에 어이없는 실수들이 많았지만 무사히 끝낼 수 있었다.

🧶 댓글 테이블 생성

model Comments {
  id        Int       @id @default(autoincrement()) @db.UnsignedInt
  nickname  String    @db.VarChar(255)
  content   String    @db.Text
  user_Id   Int       @db.UnsignedInt
  post_Id   Int       @db.UnsignedInt
  createdAt DateTime  @default(now())
  updatedAt DateTime  @updatedAt
  userInfo  UserInfos @relation(fields: [nickname], references: [nickname], onDelete: Cascade)
  post      Posts     @relation(fields: [post_Id], references: [id], onDelete: Cascade)
  user      Users     @relation(fields: [user_Id], references: [id], onDelete: Cascade)
}

여기에 userInfo까지 연관지은 이유는 닉네임을 띄우기 위해서이다.

🎡 댓글 작성 기능


댓글을 달 게시글이 존재한지 먼저 확인한 후에 댓글을 생성한다. 이 때 nickname을 넣기 위해 온갖 애(잘만 있던 userInfo의 nickname을 연관짓기 위해 unique로 설정했다가 온갖 에러들을 맛보았고, unique 설정 후에는 한명의 닉네임만 나와서 req.local.user를 여러번 확인해야했다)를 썼고 결국

성공했다.

🎡 댓글 조회 기능


모든 댓글들이 아닌 특정 게시글의 댓글들을 조회하도록 했다. 이를 위해 findMany에서 where절로 postId를 한정짓도록 하였다. 그리고 수정기능을 추가했기 때문에 updatedAt도 나오도록 설정했고, 최신순 댓글들로 보기 위해 desc로 정렬했다.

🎡 댓글 수정 기능


우선 본인의 댓글만 수정 가능하도록 설정했다. 나머지는 개인과제처럼 update로 수정...

🎡 댓글 삭제 기능


수정처럼 본인 확인 과정을 거친 후 삭제가 진행되도록 했다.

+ 프로필 조회 시 특정 갯수만큼 게시글 가져오기

어제 이 부분을 찾지 못해 최신꺼 하나만 올려 걍 하고 방치하다가... 생각해보니 vsc의 mysql에 top100이 있는것 아닌가...! 코드를 냉큼 보니 mysql은 limit를 쓰고 있었다. 하지만 prisma는 절대 mysql과 같은 길을 걷지 않으니... 구글링하니 take를 쓴다고 한다.


그러면 이렇게 최신순으로 3개의 게시글(의 요약본)을 같이 볼 수 있다!

profile
배워나가는 중

0개의 댓글