2024년 12월 27일

김동환·2024년 12월 27일

오늘의 코드

게시판 스키마 모델

// 게시글 정보를 저장하는 테이블
model Posts {
  postId    Int        @id @default(autoincrement()) // 게시글 ID, 자동 증가
  profileId Int @unique// 프로필 ID, 고유 값
  title     String // 게시글 제목
  postImage String?
  likeCount Int // 좋아요 수
  content   String // 게시글 내용
  createdAt DateTime   @default(now()) // 생성 날짜
  updatedAt DateTime   @updatedAt // 수정 날짜
  profile   Profiles   @relation(fields: [profileId], references: [profileId]) // 프로필과의 관계
  comments  Comments[] // 게시글에 달린 댓글
  likes     Likes[] // 게시글에 달린 좋아요
}

처음 만들었던 모델에서 profileId 에 @unique 값을 설정한채 posts 모델에서 post 메서드로 게시판 생성 라우터를 만들었다.

// 게시글 생성
router.post('/posts', authMiddleware, async (req, res, next) => {
  try {
    const { title, likeCount, content } = req.body;
    console.log(req.user);
    const profileId = req.user.userId; // 인증된 사용자 profileId
    // profileId가 누락된 경우 오류 처리
    if (!profileId) {
      return res.status(400).json({ message: 'profileId가 필요합니다.' });
    }

    const post = await prisma.posts.create({
      data: {
        title,
        likeCount: likeCount ?? 0, // likeCount가 undefined일 경우 기본값 0으로 설정
        content,
        profileId,
      },
    });

    return res
      .status(201)
      .json({ message: '게시글이 생성되었습니다.', data: post });
  } catch (error) {
    next(error); // 에러를 다음 핸들러로 전달
  }
});

하지만 프리즈마에서 데이터를 찾을 수 없다고 계속 오류가 나며 해결을 하지 못했다.
계속 라우터 코드에서 문제를 찾으려했지만 알고보니 스키마 모델에 값을 잘 못 주고 있었다.

profileId Int // 프로필 ID, 고유 값

profileId 에서 unique 값만 뺏더니 그 뒤로는 오류가 해결되고 잘 돌아가는 모습을 보였다.
unique 값을 설정할때에는 상관관계를 잘 따져 해야된다.


상식

TCP 상태

TCP는 연결형 통신과 신뢰할 수 있는 통신을 유지하기 위해 다양한 상태를 유지합니다.
상태는 현재 어떤 통신 과정에 있는지를 나타내는 정보입니다.
TCP는 상태를 유지하고 활용한다는 점에서 스테이트풀(statueful) 프로토콜이라고 부릅니다.

UDP

UDP는 TCP와 달리 비연결형 통신을 수행하는 신뢰할 수 없는 프로토콜입니다.
그래서 연결 수립 및 해제, 재전송을 통한 오류 제어, 혼잡 제어, 흐름 제어 등을 수행하지 않습니다.
TCP처럼 상태를 유지하지도 않습니다. 상태를 유지하지도, 활용하지도 않는다는 점에서 UDP를 스테이트리스(stateless) 프로토콜의 일종이라고도 합니다.


하루일과

오전에는 스탠다드반에서 전송 계층에 대한 내용을 배웠고 ip에 관한 이해에 도움이 되는 강의였다. 그리고 오후에는 뉴스 피드 프로젝트를 진행했고 위의 내용을 고치고 라우터를 완성시켰다.

profile
Node.js 7기

0개의 댓글