mongoose“二传手”就像“吸气”?

在MongoDB和Node.js中使用Mongoose

以前我有我的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,}))$/ } }); 

当我的用户被创build时,我encryption了密码。 然后我发现了关于“ 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,}))$/ } }); 

我没有做任何其他改变(我记得),当试图用用户login时,我发现我的密码是错误的。 当我查看数据时,从数据库发回的encryption密码与存储在数据库中的密码不同。 如果我从UserSchema中取出“setter”,它看起来是正确的。

现在我的问题是“setters”是这样描述的:

正如您在上面看到的,setter允许您在数据到达原始mongodb文档之前转换数据,并将其设置为实际键上的值。

对我来说,看起来这个Setter实际上就像Getter一样,并且在数据从数据库返回时转换数据。

我完全误解了吗?

这实际上是Mongoose 2.0中的一个bug,