반응형
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);
반응형