将 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 ”并将我的 UserSchema 更改为:
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 中取出“setter”,它看起来是正确的。
现在我的问题是“setter”是这样描述的:
正如您在上面看到的,setter 允许您在数据到达原始 mongodb 文档并设置为实际键上的值之前对其进行转换。
对我来说,看起来这个 Setter 实际上就像一个 Getter 并在数据从数据库返回时对其进行转换。
我完全误解了这一点吗?