Will find a way
[Express] Express로 하는 MVC 패턴 예제 (feat. MongoDB) 본문
https://jakapark.tistory.com/68
[디자인 패턴] MVC 패턴에 대해서 간단히 알아보는 글
들어가기 전백엔드와 DB 기본을 공부하던 중 기초 디자인 패턴중인 MVC 패턴에 대해서 알게 됐다. 디자인 패턴이란 기존 환경 내에서 반복적으로 일어나는 제들을 어떻게 풀어나갈 것인가에 대
jakapark.tistory.com
며칠 전에 MVC 패턴에 대해서 알아보았다. (윗글 참고)
오늘은 MVC 패턴 예제 코드를 작성해보려고 한다.
MVC에 대해서 간단히 알아보자면
Model : 데이터를 처리
View : 유저가 보이는 화면
Controller : Model과 View를 이어주며 유저의 요청을 담당한다
.env 파일
DB_CONNECT = "MongoDBURI"
Config.js [./config/dbConnect.js]
// mongoose를 이용하여 MongoDB 연결
const dbConfigure = async () => {
try {
const connect = await mongoose.connect(process.env.DB_CONNECT);
console.log("DB Connection Success")
} catch(err) {
console.log("DB Connection Fail")
}
}
module.exports = dbConfigure;
app.js (엔드포인트 파일)
const express = require("express");
const dbConnect = require("./config/dbConnect")
const mongoose = require("mongoose");
const app = express();
const router = express.Router();
require("dotenv").config();
// view engine 사용
app.set("view engine", "ejs");
app.set("views", "./views");
// mongoDB 연결
dbConnect();
// routing
app.get("/", (req, res) => {
res.send("Hello World");
});
// Middleware 추가
app.use(express.json()); // body에서 json 데이터를 추출하여 사용 가능
app.use(express.urlencoded({extended: true}));
// 라우팅 미들웨어
app.use("/contacts", require("./routes/contactRoutes"));
// Server 연결
app.listen(3000, () => {
console.log("Server On~~~");
});
라우트 처리 / routes.js [./routes/routes.js]
const express = require("express");
const { getAllContacts, createContact } = require("../controllers/Controller");
const router = express.Router();
router.route("/").get(getAllContacts).post(createContact);
router.route("/:id").get((req, res) => {
res.send(`${req.params.id} 리스트 확인`);
});
module.exports = router;
모델 / model.js [./models/models.js]
const mongoose = require("mongoose");
const shema = new mongoose.Schema(
{
name: {
type: String,
required: true
},
email: {
type: String
},
phone: {
type: String,
required: [true, "전화번호를 꼭 입력해주세요!"]
},
},
{ timestamps: true }
);
// 스키마 -> 모델
const Contact = mongoose.model("Contact", schema);
module.exports = Contact;
컨트롤러 / controller.js [./controller/controller.js]
const Contact = require("../models/Model");
const getAllContacts = async (req, res) => {
res.send("Contacts Page");
};
const createContact = async (req, res) => {
const { name, email, phone} = req.body;
if( !name || !email || !phone ){
return res.send("필수 값이 입력되지 않았다.");
}
const contact = await Contact.create({ name, email, phon });
res.send("Create Contacts");
};
module.exports = { getAllContacts, createContact };
View (ejs 파일 생략)
'BackEnd > Express' 카테고리의 다른 글
CORS (Cross-Origin Resource Sharing)에 대해서 (0) | 2025.02.24 |
---|---|
[NodeJS/Express] Express에 대해서 (0) | 2024.06.29 |