Mongoose Validation ve Custom Validator Kullanımı
Mongoose Validation ve Custom Validator Kullanımı
Mongoose, Node.js üzerinde MongoDB ile çalışma kolaylığı sağlayan popüler bir ODM (Object Data Modeling) kütüphanesidir. Mongoose ile veri modellerinizi (schema) tanımlarken yerleşik validation (doğrulama) desteği ile veritabanına yanlış veya eksik veri kaydını kolayca engelleyebilirsiniz. Ayrıca kendi özel (custom) validator fonksiyonlarınızı tanımlayarak projeye özgü kuralları da uygulayabilmektesiniz. Bu makalede Mongoose Validation ve Custom Validator konularını teknik detayları ile ele alıyoruz.
Mongoose Validation Nedir ve Nasıl Çalışır?
Mongoose validation, bir belgenin veritabanına kaydedilmeden önce belirli kuralları karşılayıp karşılamadığını kontrol eden bir mekanizmadır. Mongoose validation ile bir property için required, minLength, maxLength, min, max, match (regex), enum gibi hazır doğrulama türlerinden yararlanılabilir. Ayrıca hata mesajlarını özelleştirerek kullanıcıya daha açıklayıcı bildirimler sunmak mümkündür.
Örnek: Basit Mongoose Validation Kullanımı
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
username: {
type: String,
required: [true, 'Kullanıcı adı zorunlu!'],
minlength: [3, 'Kullanıcı adı en az 3 karakter olmalı!']
},
age: {
type: Number,
min: [18, 'Yaş 18 veya üzeri olmalı!']
}
});
const User = mongoose.model('User', userSchema);
Bu örnekte username alanı zorunlu olup minimum 3 karakter uzunluğunda olmalıdır. age alanı ise 18'den küçük olamaz. Bu validation kuralları, belge kaydedilirken otomatik kontrol edilir.
Custom Validator (Özel Doğrulayıcı) Kullanımı
Bazen standart doğrulama kuralları yeterli olmayabilir ve Mongoose Custom Validator tanımlamanız gerekebilir. Custom validator ile bir field için dilediğiniz JavaScript fonksiyonu ile özel doğrulama kuralları ekleyebilirsiniz.
Örnek: Mongoose Custom Validator ile Email Kontrolü
const emailRegex = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/;
const userSchema = new mongoose.Schema({
email: {
type: String,
validate: {
validator: function(v) {
return emailRegex.test(v);
},
message: props => `${props.value} geçerli bir e-posta adresi değil!`
},
required: [true, 'E-posta zorunlu!']
}
});
Yukarıdaki örnekte, email alanı için regex ile kontrol yapan bir custom validator kullanılmaktadır. Girilen email yanlışsa özel hata mesajı dönülür.
Async Validator Örneği (Mongoose >=4.9.0)
const userSchema = new mongoose.Schema({
username: {
type: String,
validate: {
validator: async function(value) {
// Kullanıcı adının benzersiz olup olmadığını kontrol et
const count = await this.model('User').countDocuments({ username: value });
return count === 0;
},
message: 'Bu kullanıcı adı zaten alınmış!'
},
required: true
}
});
Bu örnekte asenkron custom validator ile kullanıcı adının benzersiz olması sağlanmaktadır. Mongoose validation ve custom validatorlar sayesinde yüksek veri kalitesi ve güvenliği elde edilir.
Mongoose Validation ve Custom Validator Sonuç
Kendi projelerinizde Mongoose validation ve custom validator ile hem standart hem de ihtiyaçlarınıza uygun gelişmiş doğrulama işlemlerini kolayca uygulayabilirsiniz. Yapılandırılmış veri ve üstün hata yönetimi için Mongoose'un sunduğu bu imkanlardan mutlaka yararlanmalısınız. Böylece MongoDB üzerinde güvenli, ölçeklenebilir ve doğru veri ile çalışan uygulamalar geliştirebilirsiniz.

Yorum Gönder