مقدمة
يحصلو تعيينتساعدك على تغيير كيفية استرداد وتعيين الخصائص المحددة بواسطة المفاتيح والقيم في المستند الخام الأساسي.
واضعو
تعيين إنها تسمح لك بتحويل بيانات مستند Mongoose قبل وصولها إلى مستند MongoDB الخام ويتم تعيينها كقيمة لمفتاح فعلي.
لنفترض أنك تُطبّق تسجيل مستخدم لموقع ويب. يُقدّم المستخدمون بريدًا إلكترونيًا وكلمة مرور، ويُخزّنان في MongoDB. البريد الإلكتروني هو سلسلة نصية تُريد تحويلها إلى أحرف صغيرة بحيث لا يحتوي البريد الإلكتروني الواحد على أكثر من حساب واحد. على سبيل المثال، يُمكن تسجيل [email protected] لحسابين عبر [email protected] و[email protected].
يمكنك بسهولة ضبط تطبيع الأحرف الصغيرة للبريد الإلكتروني عبر مُعيِّنات Mongoose. لاحظ في المقطع التالي أن المُعيِّنات (وكذلك المُستلِمين) مُعرَّفة في المخطط:
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 الخام وتعيينها كقيمة لمفتاح فعلي.
الحاصلون
يحصل إنها تسمح لك بتحويل وجهات نظر البيانات أثناء التنقل من مستند MongoDB الخام إلى ما تراه.
لنفترض أنك تخزن رقم بطاقة ائتمان وتريد إخفاء كل شيء باستثناء آخر أربعة أرقام عن مستخدم Mongoose. يمكنك القيام بذلك بتحديد مستلم كما يلي (لاحظ مجددًا أن المستلمين مُعرّفون في المخطط):
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'
});نتيجة
تُستخدم المُعيِّنات لتعديل البيانات الخام الأساسية. وتُستخدم المُحصِّلات لتحويل البيانات الخام الأساسية (وليس تعديلها على مستوى البيانات الخام) إلى ما يتوقعه المستخدم. كلاهما مُعرَّف في تعريف المخطط.









