본문 바로가기

기록/프로젝트

Campermoa 프로젝트 일기(1)

프로젝트 개요

캠핑장에 대한 간단한 리뷰를 남기고 편집할 수 있는 사이트.

성남 ICT 웹개발자 과정 부트캠프에서 배운 부분을 정리하기 위해 들었던 강의인 Colt Steele의 Web Developer Bootcamp에서 나오는 내용을 참고함.

사용된 기술 스택

HTML, CSS, Javascript, Node.JS, Express.JS, MongoDB, Mongoose

현재 진행된 부분

1. 기본적인 프로젝트 시작

프로젝트에서 기본적인 파일을 만든 뒤(폴더와 폴더 내부 app.js)

$ npm init -y

이 코드를 입력해서 파일 내부에 package.json을 생성한다. 

나중에 어느 컴퓨터로 옮겨가든지 npm 모듈을 설치할 수 있는데 npm i 라는 명령어를 터미널에 치면 된다.

 

2. express를 사용한 기본적인 라우팅 및 기본적인 REST API(CRUD) 구현

app.get("/", (req, res) => {
  res.render("home");
});

이 코드 자체는 기본 사이트에 들어가면 "home"이라는 글자를 보여준다거나 프로젝트 파일 내부에 있는 views에 있는 home.ejs를 보여준다.

 

app.use((req, res, next) => {
  console.log("미들웨어");
  console.log("주소는?", req.path);
  if (req.path === "/ahiru") {
    res.send("ahiru");
  } else if (req.path === "/test") {
    res.send("test");
  } else {
    next();
  }
});

이부분도 기본적인 라우팅인데, 우선 콘솔에 '미들웨어'라고 뜬 다음 주소가 'ahiru','test'면 각 주소가 뜨는데 반해, 다른 주소가 나오면 다음 미들웨어로 넘어간다.

 

async 와 await를 활용한 비동기함수를 적용할 수도 있다. CRUD를 구현할 때 (불러오기, 수정, 삭제) 비동기함수를 적용하고, 새로 만들때는 당연히 불러올 데이터가 없기 때문에 비동기함수를 적용할 필요는 없다. (코드 내부에서도 적용하지 않았다.)

 

express에서 사용되는 기본적인 라우팅에 관해서는 이 문서를 참고하면 된다.

 

3. mongoose에서 활용되는 기본적인 자료 스키마 구현 및 mock data 시딩

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const CampgroundSchema = new Schema({
  title: String,
  price: String,
  description: String,
  location: String,
});

module.exports = mongoose.model("Campground", CampgroundSchema);

우선 기본적인 내용만 들어가기 때문에 타이틀, 가격, 설명, 위치를 string으로 정의했다. 

const { default: mongoose } = require("mongoose");

const cartSchema = new mongoose.Schema({
  goodsId: {
    type: Number,
    required: true,
    unique: true,
  },
  quantity: {
    type: Number,
    required: true,
  },
});

module.exports = mongoose.model("cart", cartSchema);

 

스파르타 항해99에서 배웠던 부분인데, 스키마에 있는 항목 속성에 unique(고유)를 넣어서 값이 중복되지 않게 할 수 있고, required를 넣어서 이 부분이 입력되지 않으면 오류 메시지를 띄우고 뱉어낼 수도 있다!

 

프로젝트 Github 링크

참고자료

유데미, Web Developer Bootcamp (콜트 스틸)

스파르타 항해99, Node.js 기초반 (강승현)

'기록 > 프로젝트' 카테고리의 다른 글

미완성된 프로젝트, jpndict  (0) 2022.08.20
Campermoa 프로젝트 일기(5-完)  (0) 2022.08.19
Campermoa 프로젝트 일기(4)  (0) 2022.08.18
Campermoa 프로젝트 일기(3)  (0) 2022.08.17
Campermoa 프로젝트 일기(2)  (0) 2022.08.16