Mon goose Schema.methods не является ошибкой функции - PullRequest
0 голосов
/ 21 января 2020

У меня проблема с 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 "";
    }
  }
};
...