【MongoDB】Mongooseのよく使われる定型的な設定
1. required: true
この設定は、フィールドが必須であることを示します。フィールドに値がない場合、ドキュメントの保存が失敗します。
name: {
type: String,
required: true
}
2. trim: true
この設定は、フィールドの値の前後にある余分な空白を自動的に削除します。
name: {
type: String,
trim: true
}
3. lowercase: true
フィールドの値を自動的に小文字に変換します。これは、例えば、ユーザー名やメールアドレスを一貫して小文字で保存するために使用されます。
email: {
type: String,
lowercase: true
}
4. uppercase: true
フィールドの値を自動的に大文字に変換します。たとえば、国コードなどを大文字で保存する場合に使用します。
countryCode: {
type: String,
uppercase: true
}
5. default: 値
フィールドにデフォルト値を設定します。ドキュメント作成時に値が指定されていない場合、このデフォルト値が使用されます。
isActive: {
type: Boolean,
default: true
}
6. minlength: 数値, maxlength: 数値
文字列フィールドに対して、最小長と最大長を設定します。文字列がこの範囲外であれば、保存時にエラーが発生します。
username: {
type: String,
minlength: 3,
maxlength: 15
}
7. enum: [値の配列]
フィールドが特定の値のリストのいずれかであることを強制します。リストに含まれない値を保存しようとするとエラーが発生します。
role: {
type: String,
enum: ['user', 'admin', 'superadmin'],
default: 'user'
}
8. match: 正規表現
フィールドが特定の正規表現パターンに一致することを強制します。たとえば、メールアドレスのフォーマットを検証する場合に使用します。
email: {
type: String,
match: [/^\S+@\S+\.\S+$/, '有効なメールアドレスを入力してください']
}
9. unique: true
フィールドが一意であることを強制します。同じ値を持つドキュメントが既に存在する場合、保存時にエラーが発生します。
username: {
type: String,
unique: true
}
10. validate
validateオプションには、バリデーション関数とエラーメッセージを指定できます。バリデーション関数は、フィールドの値を引数に取り、true または false を返します。false を返した場合、保存が拒否され、指定したエラーメッセージが生成されます。
age: {
type: Number,
default: 0,
validate(value) {
if(value < 0) throw new Error("年齢を正しく入力してください。");
},
}