게시판 스키마 모델
// 게시글 정보를 저장하는 테이블
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는 TCP와 달리 비연결형 통신을 수행하는 신뢰할 수 없는 프로토콜입니다.
그래서 연결 수립 및 해제, 재전송을 통한 오류 제어, 혼잡 제어, 흐름 제어 등을 수행하지 않습니다.
TCP처럼 상태를 유지하지도 않습니다. 상태를 유지하지도, 활용하지도 않는다는 점에서 UDP를 스테이트리스(stateless) 프로토콜의 일종이라고도 합니다.
오전에는 스탠다드반에서 전송 계층에 대한 내용을 배웠고 ip에 관한 이해에 도움이 되는 강의였다. 그리고 오후에는 뉴스 피드 프로젝트를 진행했고 위의 내용을 고치고 라우터를 완성시켰다.