
오늘 한 일은 댓글 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개의 게시글(의 요약본)을 같이 볼 수 있다!