728x90
📆 5월 30일
마이페이지 데이터 연동 (내 글/댓글/좋아요/정보)
내 게시글 가져오기 (/users/:username/posts)
const posts = await Post.find({ author: username }).sort({ createdAt: -1 });
- 유저별로 author 기준 필터링
- 최신순 정렬(sort({ createdAt: -1 }))
- 프론트에선 리스트로 출력
내 댓글 가져오기 (/users/:username/comments)
const comments = await Comment.find({ username }).sort({ createdAt: -1 });
- 작성자 기준으로 댓글 조회
- 마찬가지로 최신순 정렬
좋아요한 글 목록 (/users/:username/likes)
const likedPosts = await Post.find({ _id: { $in: user.likedPosts } });
- 유저 스키마에 저장된 likedPosts 배열을 기준으로 $in 쿼리
- 복수의 ID로 한 번에 찾는 방법
사용자 정보 수정 API
const updatedUser = await User.findByIdAndUpdate(userId, updateData, { new: true, select: '-password', });
- findByIdAndUpdate로 수정
- 응답 시 비밀번호 제외 (select: '-password')
디렉토리 구조 정리 및 리팩토링
- model → models 폴더로 정리
Post.js, Comment.js, User.js 모델 정리 완료 - API 요청 관련 userApi.js, postApi.js를 기능별로 확장함
- API 명명 규칙을 명확하게 통일 (예: /users/:username/posts, /users/:username/comments 등)
MVC 패턴이란?
MVC(Model-View-Controller) 패턴은
웹 개발에서 자주 사용하는 구조화 설계 방법이다.
- Model: 데이터와 로직 담당 (DB, 계산, 데이터 저장 등)
- View: 사용자에게 보이는 화면(UI)
- Controller: 사용자의 입력(요청) 처리, Model과 View 연결
💡 각 역할 자세히 보기
1. Model (모델)
- 뭐하는 곳?
데이터를 저장, 불러오기, 처리하는 모든 “핵심 비즈니스 로직”의 공간 - 예시
- 데이터베이스에 저장되는 유저 정보, 게시글, 댓글 등
- 새로운 글 작성/수정/삭제하는 기능
2. View (뷰)
- 뭐하는 곳?
사용자(클라이언트)에게 보여주는 모든 “화면(UI)” - 예시
- HTML, CSS, React 컴포넌트, EJS 템플릿 등
- 게시글 리스트, 글쓰기 폼, 로그인 폼
3. Controller (컨트롤러)
- 뭐하는 곳?
사용자의 요청(클릭, 입력 등)을 받아
Model에게 “데이터 처리”를 시키고
View에 “결과”를 전달하는 중간 관리자 - 예시
사용자가 로그인 버튼을 클릭 → Controller가 아이디/비번 확인(Model) → 성공하면 메인 페이지(View)로 이동
흐름 예시로 정리
사용자가 게시글 작성 버튼 클릭
→ Controller가 요청 받음
→ Model에게 “새 글 저장해!” 요청
→ 저장 성공하면 View(글 목록)에 반영
→ 사용자는 새로운 게시글을 볼 수 있음
왜 MVC가 중요할까?
- 역할별로 파일/폴더 정리가 쉬움
- 협업에 유리: Model, View, Controller를 나눠 맡기 편함
- 유지보수 쉬움:
예를 들어, 화면(UI)만 바꾸려면 View만 손대면 됨
데이터 구조 바꿀 땐 Model만,
흐름(로직) 바꿀 땐 Controller만 바꾸면 됨
한줄 정리
MVC 패턴은 데이터(모델), 화면(뷰), 처리 로직(컨트롤러)을 분리해서
더 깔끔하고, 유지보수/확장에 강한 프로그램을 만드는 방법이다!
728x90
'💡 URECA > 🗒️ 스터디 노트' 카테고리의 다른 글
LabbitLog 배포 (0) | 2025.06.05 |
---|---|
[URECA] LabiitLog 블로그 만들기 (1) | 2025.06.05 |
[URECA] Day79 LabbitLog 블로그 만들기 #5 (0) | 2025.05.29 |
[URECA] LabbitLog LabbitLog 블로그 만들기 #4 (0) | 2025.05.29 |
[URECA] Day 80 LabbitLog 블로그 만들기 #4 (0) | 2025.05.27 |