웹/Express.js + MongoDB
-
[Express.js/MongoDB] Routing? Routing!웹/Express.js + MongoDB 2023. 2. 26. 00:51
목표 Routes, Router, Routing 이 무엇인지 간략히 알아본다. Express.js의 라우팅 시스템을 알아본다. 과정 라우팅이란 무엇인가? 클라이언트 상에서 HTTP 메서드를 통해 "어떤 사이트 주세요" 라고 요청하면 그에 해당하는 파일을 주는 것이라고 설명할 수 있다. 그런 요청들은 매우 다양해서(GET, POST, PATCH, DELETE ...) 어떤 한 객체나 프로그램이 관리하는 게 효율적이지 않겠는가? 어떤 음식점이 대박이 나서 영업 시간 내내 웨이팅이 있다고 해보자. 만약 그 식당에 메인 쉐프만 있다면 쉐프가 주문을 받고 결제를 한 뒤, 음식을 내야할 것이다. 한 사람이 이 모든것을 소화하기엔 너무 버거운 작업량이다. 그래서 홀에서 서빙을 하는 웨이터를 두기로 한다. 웨이터를 영..
-
[Express.js/MongoDB] UPDATE 기능 구현하기웹/Express.js + MongoDB 2023. 2. 24. 16:54
목표 CRUD 기능 중 UPDATE 기능을 구현합니다. 과정 1. UPDATE가 가능한 홈페이지를 만듭니다. 2. npm 모듈 중 `method-override` 라이브러리를 설치해 적용합니다. const methodOverride = require("method-override"); app.use(methodOverride("_method")); 3. 라우트 핸들링을 다음과 같이 해줍니다. app.get("/apperals/:id/edit", async (req, res, next) => { const apperal = await Apperal.findById(req.params.id); res.render("edit", { apperal }); }); app.patch("/apperals/:id", ..
-
[Express.js/MongoDB] READ 기능 구현하기웹/Express.js + MongoDB 2023. 2. 24. 16:24
목표 CRUD 기능 중 READ 기능을 구현한다. 과정 사실 지난번 포스팅에서 제품을 READ하는 기능을 추가하였지만, 해당 제품의 Detail 페이지를 만들어 보다 더 자세한 READ 기능을 구현해보겠습니다. 1. 먼저, 다음과 같은 라우트 핸들러를 작성합니다. app.get("/apperals/:id", async (req, res) => { const apperal = await Apperal.findById(req.params.id); res.render("details", { apperal }); }); 2. 다음과 같은 화면을 구성합니다. 3. ID를 잘못 입력한 경우를 대비해 오류 처리를 해줍니다. app.get("/apperals/:id", async (req, res, next) => {..
-
[Express.js/MongoDB] CREATE 기능 구현하기웹/Express.js + MongoDB 2023. 2. 24. 15:22
목표 Express.js와 MongoDB를 연결하여 CREATE 기능을 구현한다 과정 Express.js와 MongoDB에 대한 설정이 모두 완료되었다는 가정하에 진행합니다. 렌더링 방식은 ejs 템플릿 엔진을 이용한 SSR(Server Side Rendering) 방식으로 진행합니다. 0. 기본 서버 코드 설정 const express = require("express"); const app = express(); const mongoose = require("mongoose"); // mongoose setting mongoose.set("strictQuery", true); main() .then(() => console.log("Mongo Connected!")) .catch((err) => co..