타입 지정 (Type)
String, Number, Date, Buffer, Boolean, Mixed, ObjectId, Array, Decimal128, Map, Schema.Types
예: { name: String }
필수 항목 (required)
필드가 필수인지 여부를 지정합니다.
예: { name: { type: String, required: true } }
기본값 (default)
필드의 기본값을 지정합니다.
예: { age: { type: Number, default: 0 } }
유일성 (unique)
필드 값이 유일해야 함을 지정합니다.
예: { email: { type: String, unique: true } }
인덱스 (index)
필드에 인덱스를 생성합니다.
예: { email: { type: String, index: true } }
유효성 검사 (validate)
필드 값에 대한 유효성 검사를 지정합니다.
예: { age: { type: Number, validate: value => value >= 0 } }
길이 제한 (maxlength, minlength)
문자열 필드의 최대/최소 길이를 지정합니다.
예: { name: { type: String, maxlength: 50 } }
열거형 (enum)
문자열 필드가 가질 수 있는 값들을 제한합니다.
예: { role: { type: String, enum: ['user', 'admin'] } }
일치 (match)
문자열 필드가 정규표현식에 맞아야 함을 지정합니다.
예: { email: { type: String, match: /.+\@.+\..+/ } }
맞춤 메시지 (custom error messages)
유효성 검사 실패 시 사용자 정의 오류 메시지를 설정합니다.
예: { age: { type: Number, min: [18, 'Too young'] } }
📌 참고 예제
constmongoose=require('mongoose');const { Schema } = mongoose;// 사용자 스키마 정의constuserSchema=newSchema({// 문자열 타입 필드, 필수 입력, 최대 길이 100자 name: { type: String, required:true, maxlength:100, },// 이메일 필드, 필수 입력, 유일해야 하며 정규 표현식을 통해 이메일 형식 검사 email: { type: String, required:true, unique:true, match: /.+\@.+\..+/, },// 나이 필드, 최소 18세, 최대 65세, 유효성 검사 실패 시 맞춤 오류 메시지 age: { type: Number, min: [18,'Must be at least 18'], max: [65,'Must be at most 65'], },// 역할 필드, 'user' 또는 'admin'만 허용, 기본값은 'user' role: { type: String, enum: ['user','admin'], default:'user', },// 생성 날짜 필드, 기본값은 현재 시간 createdAt: { type: Date, default:Date.now, },// 수정 날짜 필드, 기본값은 현재 시간 updatedAt: { type: Date, default:Date.now, },});// 모델 생성constUser=mongoose.model('User', userSchema);module.exports= User;