Использование Mongoose с MongoDB и Node.js
Ранее моя UserSchema определялась так:
var UserSchema = new Schema({
username: { type: String, unique: true },
password: String,
email: { type: Email, unique: true, validate:/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ }
});
Когда мой пользователь был создан, я зашифровал пароль. Затем я узнал о " setters " и изменил свою пользовательскую схему на эту:
var UserSchema = new Schema({
username: { type: String, unique: true },
password: { type:String, set:encryption.Encrypt },
email: { type: Email, unique: true, validate:/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ }
});
Я не внес никаких других изменений (которые я помню), и при попытке войти в систему с Пользователем я обнаружил, что мой пароль был неправильным. Когда я посмотрел на данные, зашифрованный пароль, отправленный обратно из базы данных, отличался от того, который был сохранен в базе данных. Если я выну «сеттер» из моей UserSchema, он будет выглядеть правильно.
Теперь моя проблема в том, что «сеттеры» описываются так:
Как вы можете видеть выше, сеттеры позволяют преобразовывать данные до
он попадает в необработанный документ mongodb и устанавливается как значение для фактического
ключ.
Мне кажется, что этот Сеттер на самом деле действует как геттер и преобразовывает данные, когда они возвращаются назад из базы данных.
Я совершенно не понимаю этого?