Введение
получатьи наборОни помогают изменить способ извлечения и установки свойств, определенных ключами и значениями в исходном документе.
сеттеры
набор Они позволяют преобразовывать данные документа 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 все данные, кроме последних 4 цифр. Это можно сделать, определив получателя следующим образом (обратите внимание, что получатели определяются в схеме):
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'
});Результат
Методы-сеттеры предназначены для изменения исходных данных. Методы-геттеры предназначены для преобразования (но не изменения на уровне исходных данных) исходных данных в то, что ожидает увидеть пользователь. Оба метода определены в описании схемы.









