CRUD 기능 구현: Express.js와 MongoDB를 활용한 백엔드 개발 가이드
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
Node.js 및 Express.js 기초 지식을 가진 개발자
(중간 난이도: Mongoose, Express.js 라우팅, MongoDB 기본 개념 이해 필요)
핵심 요약
- Mongoose 모델 생성 (
Post.js
)으로 데이터 스키마 정의 및 타임스탬프 자동 생성 - CRUD 컨트롤러 구현 (
postController.js
)에서createPost
,getAllPosts
,updatePost
,deletePost
메서드 사용 - Express.js 라우팅 설정 (
postRoutes.js
)을 통해POST
,GET
,PUT
,DELETE
요청 처리 - 모듈화된 아키텍처로 확장성과 유지보수성 강화
섹션별 세부 요약
1. Mongoose 모델 정의
src/models/Post.js
에서postSchema
정의title
,body
필드 필수 입력timestamps: true
로 생성/수정 시간 자동 기록mongoose.model('Post', postSchema)
로 모델 생성
2. CRUD 컨트롤러 구현
createPost
req.body
로 데이터 생성 후post.save()
호출- 성공 시
201 Created
응답, 오류 시400 Bad Request
getAllPosts
Post.find()
로 전체 데이터 조회,500 Internal Server Error
시 오류 처리getPostById
Post.findById(req.params.id)
로 ID 기반 검색, 존재하지 않을 시404 Not Found
updatePost
findByIdAndUpdate
로 데이터 업데이트,runValidators: true
로 스키마 검증deletePost
findByIdAndDelete
로 데이터 삭제, 성공 시200 OK
응답
3. Express.js 라우팅 설정
src/routes/postRoutes.js
에서 라우터 정의POST /api/posts
:createPost
호출GET /api/posts
:getAllPosts
호출GET /api/posts/:id
:getPostById
호출PUT /api/posts/:id
:updatePost
호출DELETE /api/posts/:id
:deletePost
호출
4. 서버 설정 및 테스트
src/app.js
에서express.json()
미들웨어 등록/api/posts
경로에postRoutes
라우터 연결- 테스트 도구: Postman, cURL, 프론트엔드 UI 사용
- 예시 요청 본문:
```json
{"title":"First Blog Post","body":"This is the content of the blog post."}
```
결론
- 모듈화된 코드 구조로 코드 재사용성과 확장성 향상
- Express.js와 Mongoose 활용으로 간단한 REST API 구현 가능
- 테스트 시
POST /api/posts
엔드포인트 사용하여 데이터 생성/조회/수정/삭제 확인