gpt4 book ai didi

mongodb - Mongoose "setter"表现得像 "getter"?

转载 作者:可可西里 更新时间:2023-11-01 09:12:38 24 4
gpt4 key购买 nike

将 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”是这样描述的:

As you can see above, setters allow you to transform the data beforeit gets to the raw mongodb document and is set as a value on an actualkey.

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

我是不是完全误解了这一点?

最佳答案

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

关于mongodb - Mongoose "setter"表现得像 "getter"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6725123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com