猫鼬“塞特犬”表现得像“吸气鬼”?

时间:2011-07-17 16:15:01

标签: mongodb node.js mongoose

将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,并在数据从数据库返回时转换数据。

我完全误解了这个吗?

1 个答案:

答案 0 :(得分:5)

这实际上是Mongoose中的一个错误,已经在Mongoose 2.0中修复了