Express와 MongoDB, Mongoose

쥬씨후레시·2024년 2월 3일
0

📍 Express

Express는 node.js의 웹 개발 프레임워크 중 하나로, node.js를 사용하여 쉽게 서버를 구성할 수 있게 만들어 주는 역할을 한다.

Express 특징

  • 경량 프레임워크로 빠른 성능과 간결한 문법을 가지고 있다.
  • url 라우팅과 http 요청 처리에 뛰어남.
// app.js

// Express 모듈 가져오기
const express = require('express');

// Express 앱 생성
const app = express();

// 루트 URL에 대한 미들웨어 등록
app.get('/', (req, res) => {
  res.send('안녕');
});

// 서버를 3000번 포트에서 실행
const port = 3000;
app.listen(port, () => {
  console.log('서버 실행 완료');
});

// node app.js 명령어를 통해 http://localhost:3000에 접속하면 
// '안녕'이라는 문구가 보이고, 콘솔창에는 '서버 실행 완료'라고 뜸 

📍 MongoDB

MongoDB는 대용량 데이터를 처리하기 쉽게 만들어진 NoSQL 데이터베이스이다.

(NoSQL로 만들어짐 → 데이터를 구조화 할 필요가 없음(빠르게 개발이 가능하다.))

데이터를 배열 및 중첩 Document와 같은 복잡한 데이터 유형을 효율적으로 저장할 수 있는 유연한 JSON과 유사한 형식인 BSON으로 저장한다.

MongoDB 구성 요소

  1. 데이터베이스(Database):
    • MongoDB의 데이터 저장 단위
    • 데이터베이스는 여러 컬렉션을 포함하고 있다.
    • 데이터베이스는 보통 프로젝트 또는 애플리케이션과 관련된 데이터를 묶는 단위로 사용된다.
  2. 컬렉션(Collection):
    • MongoDB 컬렉션은 Document의 그룹이다.
    • 관련된 데이터들을 함께 저장하며, 컬렉션 내의 각 문서는 서로 다른 필드 구조를 가질 수 있다.
    • RDBMS(데이터베이스 관리 시스템)에서의 테이블에 비유할 수 있다.
  3. 도큐먼트(Document):
    • MongoDB에서의 기본 데이터 단위
    • JSON 형태로 구조화된 데이터로, 키-값 쌍으로 이루어져 있다.
    • 각 도큐먼트는 컬렉션에 저장되며, 필드, 값, 배열, 중첩된 도큐먼트 등을 포함할 수 있다.
    • RDBMS(데이터베이스 관리 시스템)에서의 레코드에 비유할 수 있다.

<예시>

데이터베이스: BlogDB

컬렉션: Posts, Users, Comments 등

도큐먼트: Posts 컬렉션에는 각 게시물에 대한 도큐먼트들이 있고, Users 컬렉션에는 각 사용자에 대한 도큐먼트들이 있다.

MongoDB의 데이터베이스는 전체 책장, 컬렉션은 한 책장 안에 있는 섹션(장르)이며, 도큐먼트는 섹션 안에 있는 각 책이라고 생각하면 된다.

📍 Mongoose

Mongoose는 MongoDB와 express 간의 연결을 생성하는 라이브러리이며, DB의 스키마를 설정하기 위해 사용한다.

mongoDB는 스키마가 없어 자유롭고 빠르게 개발이 가능하지만, 데이터의 일관성과 유효성 검사 같은 부분에서 일부 제약이 있을 수 있다. mongoDB만 사용할 경우 데이터베이스에서 제약 조건이나 일관성을 강제하기가 어렵기 때문에 이를 보완하기 위해 mongoose를 사용한다.

스키마 정의하기

const { Schema } = require('mongoose');

// PostSchema 정의하기
const PostSchema = new Schema({
  title :{
      type: String,
      required: true,
  },
  content :{
      type: Number,
      required: true,
  }
})

module.exports = PostSchema;

정의한 스키마로 모델 만들기

const mongoose = require('mongoose');
const PostSchema = require ('./schemas/post')

exports.Post = mongoose.model('Post', PostSchema);

이렇게 정의된 모델을 사용하면 MongoDB에 데이터를 저장하고 검색하는 등의 작업을 할 수 있다. 예를 들어, 위에서 만든 Post 모델을 사용해서 새로운 게시물을 생성하거나 기존 게시물을 검색할 수 있게 된다.

elice

#코딩독학 #코딩인강 #코딩배우기 #개발자 #코딩이란 #코딩교육 #프론트엔드부트캠프 #백엔드부트캠프 #국비지원부트캠프 #개발자 #백엔드 #AI부트캠프 #개발자국비지원 #백엔드개발자 #프론트엔드개발자
profile
수련 중🧘🏼‍♀️

0개의 댓글