У меня проблема с mon goose schema.methods или, по крайней мере, я так думаю ... поэтому я использую пакет crypto, чтобы иметь sh пароль для регистрации пользователя, чтобы сделать его более ненадежно. Я устанавливаю hashed_password для encryptPassword, который находится внутри schema.methods, но каждый раз, когда я пытаюсь добавить нового пользователя, появляется ошибка '(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 "";
}
}
};