Node.js와 Express를 사용하여 웹 애플리케이션을 개발할 때 MongoDB와의 연동은 중요한 과제 중 하나입니다. 이번 글에서는 간단한 웹 애플리케이션을 개발하면서 MongoDB와의 연동 방법과 Express를 사용한 라우팅 처리에 대해 알아보겠습니다.
먼저, MongoDB와의 연동을 위해 MongoDB Node.js 드라이버를 사용하겠습니다. 아래는 MongoDB와의 연동을 위한 코드입니다.
const { MongoClient } = require('mongodb');
const dbUrl = "mongodb://localhost";
let vehicleDB = null;
function connectDb() {
MongoClient.connect(dbUrl, { useUnifiedTopology: true }, function(err, client) {
if(err) throw err;
vehicleDB = client.db('vehicle');
console.log("DB 접속 성공!");
});
}
connectDb();
위 코드는 MongoDB에 연결하는 connectDb() 함수를 정의하고, 애플리케이션이 시작될 때 이를 호출하여 MongoDB와의 연결을 설정합니다.
다음으로, Express를 사용하여 HTTP 서버를 만들고, 사용자의 요청을 처리하는 코드를 작성하겠습니다.
const express = require('express');
const app = express();
app.set('view engine', 'ejs');
app.set('views', __dirname + "/views");
app.use(express.static("public"));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.post('/process/adduser', (req, res) => {
if(vehicleDB) {
let newUser = {
"id": req.body.id,
"password": req.body.password,
"name": req.body.name
}
let users = vehicleDB.collection('users');
users.insertMany([newUser], (err, result) => {
if(err) throw err;
if(result.insertedCount > 0) {
console.log('사용자 정보 추가 성공!');
res.redirect('/process/users');
} else {
res.status(500).send("<h1>Error: 회원 추가 실패!</h1>");
}
});
} else {
res.status(500).send("<h1>Error: DB가 없습니다!</h1>");
}
});
app.get('/process/users', (req, res) => {
if(vehicleDB) {
vehicleDB.collection('users').find().toArray((err, usersList) => {
if(err) throw err;
res.render('users_list', { usersList });
});
} else {
res.status(500).send("<h1>Error: DB가 없습니다!</h1>");
}
});
app.get('/car', (req, res) => {
if(vehicleDB) {
vehicleDB.collection('car').find().toArray((err, carList) => {
if(err) throw err;
res.render('car_list', { carList });
});
} else {
res.status(500).send("<h1>Error: DB가 없습니다!</h1>");
}
});
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`서버 실행 중 => http://localhost:${port}`);
});
위 코드는 Express를 사용하여 HTTP 서버를 생성하고, POST와 GET 요청을 처리합니다. POST 요청은 /process/adduser로부터 들어오며, 새로운 사용자를 추가하고 사용자 목록 페이지로 리디렉션합니다. GET 요청은 /process/users와 /car로부터 들어오며, 각각 사용자 목록과 차량 목록을 렌더링하여 클라이언트에게 반환합니다.
이렇게 Node.js, Express, MongoDB를 사용하여 간단한 웹 애플리케이션을 개발할 수 있습니다. 각 요청에 따른 데이터베이스 처리와 뷰 렌더링을 적절히 처리하여 사용자에게 원하는 콘텐츠를 제공할 수 있습니다.