이 글에서는 이전에 작성한 Node.js와 Express로 간단한 RESTful API에 MongoDB를 연동하여 데이터를 영구적으로 저장하고 관리하는 방법을 소개합니다. Mongoose 라이브러리를 활용하여 MongoDB와의 통신을 더 쉽게 처리하는 방법을 보여드리겠습니다.
1. MongoDB와 Mongoose 설치
1.1 MongoDB 설치
- 로컬 MongoDB 설치:
- 운영 체제에 맞는 MongoDB를 설치합니다.
- MongoDB 다운로드 페이지에서 설치 가능.
- 설치 후 MongoDB 서버를 실행:
bashmongod --dbpath /path/to/your/data
- Atlas를 사용한 클라우드 MongoDB:
- MongoDB Atlas에서 무료 클러스터 생성.
1.2 Mongoose 설치
- 프로젝트 디렉터리로 이동하여 Mongoose 설치:
bashnpm install mongoose
2. MongoDB 연결 설정
2.1 MongoDB와 연결
server.js에서 Mongoose를 사용하여 MongoDB에 연결합니다.
// MongoDB URI
const mongoURI = 'mongodb://localhost:27017/restapi_demo'; // 로컬 MongoDB
// const mongoURI = 'your-mongo-atlas-uri'; // Atlas URI
// MongoDB 연결
mongoose
.connect(mongoURI, { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log('MongoDB 연결 성공!'))
.catch((err) => console.error('MongoDB 연결 실패:', err));
3. MongoDB 데이터 모델링
3.1 Mongoose 스키마와 모델 생성
MongoDB의 데이터를 관리하기 위해 Mongoose 스키마와 모델을 정의합니다. models/User.js 파일을 생성하고 아래와 같이 작성합니다.
// 사용자 스키마 정의
const UserSchema = new mongoose.Schema({
name: { type: String, required: true },
email: { type: String, required: true, unique: true },
age: { type: Number },
createdAt: { type: Date, default: Date.now },
});
// 모델 생성
const User = mongoose.model('User', UserSchema);
module.exports = User;
4. API 엔드포인트 수정
4.1 사용자 CRUD 기능 구현
server.js 파일에서 MongoDB와 연동하여 CRUD(Create, Read, Update, Delete) 기능을 구현합니다.
1) 사용자 생성 (POST 요청)
const User = require('./models/User');
app.post('/users', async (req, res) => {
try {
const newUser = new User(req.body); // 요청 데이터로 사용자 생성
const savedUser = await newUser.save(); // MongoDB에 저장
res.status(201).json(savedUser);
} catch (err) {
res.status(400).json({ error: err.message });
}
});
2) 사용자 조회 (GET 요청)
app.get('/users', async (req, res) => {
try {
const users = await User.find(); // 모든 사용자 검색
res.json(users);
} catch (err) {
res.status(500).json({ error: err.message });
}
});
// 특정 사용자 조회
app.get('/users/:id', async (req, res) => {
try {
const user = await User.findById(req.params.id);
if (!user) return res.status(404).json({ error: '사용자를 찾을 수 없습니다.' });
res.json(user);
} catch (err) {
res.status(500).json({ error: err.message });
}
});
3) 사용자 업데이트 (PUT 요청)
try {
const updatedUser = await User.findByIdAndUpdate(req.params.id, req.body, {
new: true,
});
if (!updatedUser) return res.status(404).json({ error: '사용자를 찾을 수 없습니다.' });
res.json(updatedUser);
} catch (err) {
res.status(400).json({ error: err.message });
}
});
4) 사용자 삭제 (DELETE 요청)
try {
const deletedUser = await User.findByIdAndDelete(req.params.id);
if (!deletedUser) return res.status(404).json({ error: '사용자를 찾을 수 없습니다.' });
res.json({ message: '사용자가 삭제되었습니다.' });
} catch (err) {
res.status(500).json({ error: err.message });
}
});
5. 실행 및 테스트
5.1 서버 실행
5.2 Postman 또는 브라우저로 테스트
- POST 요청: 사용자 생성.
- GET 요청: 사용자 조회.
- PUT 요청: 사용자 정보 업데이트.
- DELETE 요청: 사용자 삭제.
6. 결론
MongoDB를 연동하여 Express API를 확장하면 데이터를 영구적으로 저장할 수 있습니다. 이를 통해 간단한 RESTful API가 더욱 강력해지고 실제 애플리케이션 환경에서 활용 가능해집니다. 다음 글에서는 **JWT(JSON Web Token)**를 사용하여 인증 기능을 추가하는 방법을 다뤄보겠습니다.
이 글이 유용했다면 댓글로 의견을 남겨주세요!
'프로그램 관련 > Web Development' 카테고리의 다른 글
IT개발자 (0) | 2025.01.08 |
---|---|
Azure App Service를 활용한 웹 애플리케이션 배포 가이드 (0) | 2024.12.31 |
Microsoft Azure 서비스 (0) | 2024.12.30 |
JWT로 Express API에 인증 기능 추가하기 - 토큰 기반 인증 가이드 (1) | 2024.12.27 |
Node.js와 Express로 간단한 RESTful API 구축하기 (0) | 2024.12.26 |