mongoose

윤태규·2023년 12월 4일

01. 코드에서 MongoDB 적용하기

  • 1) 내 코드에서 MongoDB에 연결하려면 뭘 해야 할까요?
    • 이제부터 우리는 API에 MongoDB를 연결해서 데이터를 주고 받아볼 예정입니다!
    • 이를 위해 JavaScript 코드에서도 DB Client 역할을 하는 무언가가 있어야 데이터베이스에 연결을 할 수 있는데요, 우리는 mongoose 라는 도구를 이용해 데이터베이스에 연결할 예정입니다.
  • 2) mongoose라는 라이브러리의 개념
    <aside>
    📌 `mongoose`는 MongoDB에 데이터를 쉽게 읽고 쓰게 해주는 JavaScript 라이브러리입니다. `mongoose`를 **ODM**(Object Document Mapper)이라고도 부릅니다.
    
    </aside>
    
    - ODM(Object Document Mapper)이란, JavaScript의 **객체(Object)**와 MongoDB의 **문서(Document)** 사이에서 ‘**매핑**’을 수행하는 도구입니다.
    - 우리가 JavaScript 코드에서 작업하는 **객체(Object)**를 MongoDB 데이터베이스의 **문서(Document)**로 쉽게 **변환**하거나, 반대로 **문서를 객체로 변환**해주는 작업을 수행합니다.
    - `mongoose`가 이런 **ODM**의 기능을 충실하게 잘 해주고 있기 때문에 우리는 **MongoDB**에 쉽게 데이터를 넣고 쓰고, 관리할 수 있게 되는것이예요
    3) mongoose의 문서(Document)란?
    MongoDB에서 가지고 있는 각 데이터 하나하나를 문서(Document)라고 정의합니다.
    1개 이상의 Key-Value의 쌍으로 이루어져있습니다.
    JSON 형식으로 구성되어있습니다.
    아래의 문서(Document)는 _id와 name이라는 2개의 Key를 가지고 있습니다.
    {
    "_id": ObjectId("6682192a1c155bd2f27881"),
    "name": "lyw",
    }
  • 4) mongoose의 컬렉션(Collection)이란?
    - 컬렉션(Collection)은 여러개의 문서(Document)를 보유할 수 있는 MongoDB의 구성요소입니다.
    - JSON 형식의 여러가지 문서(Document)를 보유할 수 있습니다.
    - 컬렉션(Collection)은 고정된 구성요소가 존재하지 않고, 유연하게 구성할 수 있습니다.
    - 이후에 설명할 관계형 데이터베이스(RDB)Table과 동일한 역할을 합니다.
    5) mongoose의 스키마(Schema)란?
    스키마(Schema)는 컬렉션(Collection)에 들어가는 문서(Document)가 어떤 종류의 값을 가질 것인지 정의하기위해 사용합니다.
    스키마(Schema)는 데이터의 구조와 어떤 제약 사항을 가지는지 정의하기 위해 사용하며, 일반적으로 데이터를 모델링할 때 사용합니다.
    스키마(Schema)는 어떤 필드가 있어야 하는지, 필드는 어떤 데이터 타입을 가져야 하는지를 정의합니다.
    아래는 사용자(Users) 정보를 정의한 스키마의 예시입니다.

const UsersSchema = new mongoose.Schema({
name: String, // 문자열 타입입니다.
age: Number, // 숫자 타입입니다.
favorites: [String], // 문자열 배열 타입입니다.
createdAt: { type: Date, default: Date.now }, // 날짜 타입입니다.
someId: mongoose.Schema.Types.ObjectId // ObjectId 타입입니다.

});

  • 대표적인 스키마의 타입은 어떤것들이 있을까요?
    • null : null 값과 존재하지 않는 필드
      • ex: null
    • String : 문자열
      • ex: "mongoDB"
    • Number : 숫자
      • ex: 3.14
    • Date : 날짜
      • ex: new Date()
    • Buffer : 파일을 담을 수 있는 버퍼, UTF-8이 아닌 문자열을 저장
      • ex: 0x65
    • Boolean : true or false
      • ex: true
    • ObjectId(Schema.Types.ObjectId) : 객체 ID, 주로 다른 객체를 참조할 때 넣음
      • ex: ObjectId()
    • Array : 배열 형태의 값
      • ex: ["a", "b", "c"]
  • 6) mongoose의 모델(Model)이란?
    • 모델(Model)은 데이터베이스에 데이터를 저장하고 읽어올 때 사용되는 데이터의 구조입니다.
    • 스키마를 바탕으로 만들어지고, JavaScript의 객체와 MongoDB 간의 상호작용을 하기 위해 사용합니다.
    • MongoDB의 실제 데이터를 다룰 수 있는메서드를 지니고 있습니다.
    • 만약, 사용자의 데이터를 저장하려면, 사용자(Users) 모델을 사용하여 데이터를 생성하고, 데이터베이스에 저장할 수 있습니다.
profile
끝까지 가자

0개의 댓글