Node.js와 MongoDB를 연동하여 개발하는 기본적인 과정은 다음과 같습니다.
1. 프로젝트 초기 설정
mkdir node-mongo-app && cd node-mongo-app
npm init -y
2. 필요한 패키지 설치
npm install express mongoose dotenv
- express → 서버 개발을 위한 프레임워크
- mongoose → MongoDB ODM(Object-Document Mapping) 라이브러리
- dotenv → 환경 변수 관리
3. MongoDB 연결 (Mongoose 사용)
.env 파일을 생성하고 MongoDB 연결 정보를 추가합니다.
MONGO_URI=mongodb://localhost:27017/mydatabase
PORT=3000
이제 server.js를 생성하고 MongoDB에 연결합니다.
server.js
require("dotenv").config();
const express = require("express");
const mongoose = require("mongoose");
const app = express();
const PORT = process.env.PORT || 3000;
// MongoDB 연결
mongoose.connect(process.env.MONGO_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
const db = mongoose.connection;
db.on("error", console.error.bind(console, "MongoDB 연결 실패:"));
db.once("open", () => console.log("MongoDB 연결 성공"));
// 기본 라우트
app.get("/", (req, res) => {
res.send("Node.js + MongoDB 서버 실행 중...");
});
app.listen(PORT, () => {
console.log(`서버 실행 중: http://localhost:${PORT}`);
});
4. MongoDB 모델 생성
MongoDB에서 사용할 User 모델을 정의합니다.
models/User.js
const mongoose = require("mongoose");
const userSchema = new mongoose.Schema({
name: String,
email: { type: String, unique: true },
age: Number,
});
module.exports = mongoose.model("User", userSchema);
5. REST API 생성 (CRUD 구현)
이제 routes/userRoutes.js를 만들어 API를 추가합니다.
routes/userRoutes.js
const express = require("express");
const User = require("../models/User");
const router = express.Router();
// 사용자 생성 (C)
router.post("/", async (req, res) => {
try {
const newUser = new User(req.body);
await newUser.save();
res.status(201).json(newUser);
} catch (error) {
res.status(400).json({ error: error.message });
}
});
// 모든 사용자 조회 (R)
router.get("/", async (req, res) => {
try {
const users = await User.find();
res.json(users);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
// 특정 사용자 조회 (R)
router.get("/:id", async (req, res) => {
try {
const user = await User.findById(req.params.id);
if (!user) return res.status(404).json({ message: "사용자 없음" });
res.json(user);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
// 사용자 정보 수정 (U)
router.put("/:id", async (req, res) => {
try {
const updatedUser = await User.findByIdAndUpdate(req.params.id, req.body, {
new: true,
});
res.json(updatedUser);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
// 사용자 삭제 (D)
router.delete("/:id", async (req, res) => {
try {
await User.findByIdAndDelete(req.params.id);
res.json({ message: "사용자 삭제 완료" });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
module.exports = router;
6. 서버에 라우트 추가
server.js에서 API 라우트를 등록합니다.
server.js 업데이트
app.use(express.json()); // JSON 요청 처리
app.use("/users", require("./routes/userRoutes"));
7. 서버 실행
node server.js
또는 nodemon을 사용하면 자동 리로드됩니다.
npm install -g nodemon
nodemon server.js
8. Postman 또는 cURL을 이용한 테스트
1) 사용자 추가 (POST)
curl -X POST http://localhost:3000/users \
-H "Content-Type: application/json" \
-d '{"name": "홍길동", "email": "hong@example.com", "age": 25}'
2) 모든 사용자 조회 (GET)
curl -X GET http://localhost:3000/users
3) 특정 사용자 조회 (GET)
curl -X GET http://localhost:3000/users/USER_ID
4) 사용자 수정 (PUT)
curl -X PUT http://localhost:3000/users/USER_ID \
-H "Content-Type: application/json" \
-d '{"name": "김철수", "age": 30}'
5) 사용자 삭제 (DELETE)
curl -X DELETE http://localhost:3000/users/USER_ID
✅ 정리
- Node.js + Express로 서버 구축
- Mongoose를 사용하여 MongoDB와 연동
- REST API를 활용한 CRUD 기능 구현
- Postman 또는 cURL로 API 테스트
이제 기본적인 Node.js + MongoDB 연동 개발이 완료되었습니다!
추가적으로 JWT 인증, Swagger 문서화, AWS 배포 등을 진행할 수도 있습니다.
추가 질문이나 상세 구현이 필요하면 알려주세요! 🚀
'북마크 > Q&A' 카테고리의 다른 글
SSH 로그인 시 특정 폴더만 접근할 수 있는 계정 생성 (0) | 2025.02.04 |
---|---|
랜드마크를 기준으로 Azimuth Angle과 Elevation Angle을 이용한 거리 계산 (0) | 2025.02.04 |
랜드마크와 특정 물체 간 거리 계산하기 (0) | 2025.02.04 |
댓글