본문 바로가기
백엔드

[Mongoose] Schema

by PARADISE247 2024. 9. 1.
반응형

Schema

Schema는 MongoDB 컬렉션에 매핑되고 해당 컬렉션 내 문서 형태를 정의한다.

정의한 Schema 형식에 어긋나는 데이터가 존재할 경우 에러가 발생한다.

스키마 정의 시 기본값을 설정할 수도 있고 다른 컬렉션과의 관계를 설정할 수도 있다.

 

Options

Schema 정의 시 다음과 같이 option 설정이 가능하다. 

const userSchema = Mongoose.Schema(
  {
    name: { type: String, required: true },
  },
  { timestamps: true }
);

 

그 중 몇 옵션들만 설명해보자면 🔽

 

  • timestamps: true인 경우, Mongoose가 해당 schema에 createdAt, updatedAt properties를 추가해준다.
  • collection: 특정 이름의 collection에 매핑하고 싶은 경우 사용한다. Mongoose의 네이밍 컨벤션을 따르지 않는 이름을 가진 컬렉션을 명시하기 위해 사용한다. 
  • excludeIndexes: true인 경우, 하위 Schema에 인덱스를 지정하지 않는다. 
  • _id: Mongoose는 자동으로 schema에 _id를 부여하는데 이를 막으려면 _id: false로 지정하면 된다. 
  • toObject: mongoose 문서를 Javascript Object로 변경한다. 
  • toJSON: mongoose 문서를 JSON으로 변경한다. 

 

 

SchemaTypes

Schema 타입으로 설정할 수 있는 옵션들은 다음과 같습니다.

  • String
  • Number
  • Date
  • Buffer
  • Boolean
  • Mixed
  • ObjectId
  • Array
  • Decimal128
  • Map
  • UUID

 

Schema 정의 예제

import Mongoose from "mongoose";

const userSchema = Mongoose.Schema(
  {
    name: { type: String, required: true },
   	job: { type: String, required: false },
 	age: { type: Number, required: false },
  },
  { timestamps: true }
);

 

Schema를 정의하였다면 해당 Schema를 Model에 연결하면 된다.

const User = Mongoose.model("User", userSchema);

 

반응형