我的猫鼬schema.method或至少我认为...有问题。 因此,我正在使用名为crypto的程序包对用户注册的密码进行哈希处理,以使其更加安全。我将hashed_password设置为schema.methods内部的cryptoPassword,但是每次尝试添加新用户时,都会出现错误“(node:21324)UnhandledPromiseRejectionWarning:TypeError:this.encryptPassword不是一个函数” 。我不确定我要去哪里错了,所以我们将不胜感激!
const userSchema = new mongoose.Schema({
hashed_password: {
type: String,
required: true
}
});
//virtual field
userSchema
.virtual("password")
.set(password => {
this._password = password;
this.salt = uuidv1();
this.hashed_password = this.encryptPassword(password);
})
.get(() => {
return this._password;
});
userSchema.methods = {
encryptPassword: function(password) {
if (!password) return "";
try {
return crypto
.createHmac("sha1", this.salt)
.update(password)
.digest("hex");
} catch (err) {
return "";
}
}
};