مقدمه
get
و set
به شما کمک میکنند تا نحوه دریافت و تنظیم ویژگیهای تعریفشده توسط کلیدها و مقادیر در سند خام زیربنایی را تغییر دهید.
setters
set
به شما این امکان را میدهند که دادههای سند mongoose را قبل از اینکه به سند خام MongoDB برسد و به عنوان یک مقدار روی یک کلید واقعی تنظیم شود، تبدیل کنید.
فرض کنید در حال اجرای ثبت نام کاربر برای یک وب سایت هستید. کاربران یک ایمیل و رمز عبور ارائه می دهند که در MongoDB ذخیره می شود. ایمیل رشتهای است که میخواهید آن را به حروف کوچک عادی کنید تا یک ایمیل بیش از یک حساب نداشته باشد. به عنوان مثال، [email protected] را می توان برای دو حساب از طریق [email protected] و [email protected] ثبت نام کرد.
شما می توانید نرمال سازی حروف کوچک ایمیل را به راحتی از طریق تنظیم کننده Mongoose تنظیم کنید. در قطعه زیر توجه کنید که تنظیم کننده ها (و همچنین دریافت کننده ها) در Schema تعریف شده اند:
function toLower (v) {
return v.toLowerCase();
}
var UserSchema = new Schema({
email: { type: String, set: toLower }
});
var User = mongoose.model('User', UserSchema);
var user = new User({email: '[email protected]'});
console.log(user.email); // '[email protected]'
همانطور که در بالا می بینید، تنظیم کننده ها به شما این امکان را می دهند که داده ها را قبل از رسیدن به سند خام mongodb تبدیل کنید و به عنوان یک مقدار روی یک کلید واقعی تنظیم کنید.
getters
get
به شما این امکان را میدهند که نمایش دادهها را هنگام حرکت از سند خام MongoDB به مقداری که میبینید تبدیل کنید.
فرض کنید شماره کارت اعتباری را ذخیره می کنید و می خواهید همه چیز را به جز 4 رقم آخر برای کاربر Mongoose پنهان کنید. می توانید این کار را با تعریف یک گیرنده به روش زیر انجام دهید (دوباره توجه کنید که دریافت کننده ها در Schema تعریف شده اند):
function obfuscate (cc) {
return '****-****-****-' + cc.slice(cc.length-4, cc.length);
}
var AccountSchema = new Schema({
creditCardNumber: { type: String, get: obfuscate }
});
var Account = mongoose.model('Account', AccountSchema);
Account.findById( someId, function (err, found) {
console.log(found.creditCardNumber); // '****-****-****-1234'
});
نتیجه
تنظیم کننده ها برای اصلاح داده های خام زیربنایی در نظر گرفته شده اند. دریافتکنندهها برای تبدیل (اما نه اصلاح در سطح دادههای خام) دادههای خام زیربنایی را به چیزی که کاربر انتظار دارد ببیند در نظر گرفته شده است. هر دو در تعریف Schema تعریف شده اند.