猫鼬Schema.methods不是函数错误

时间:2020-01-21 17:18:34

标签: mongoose mongoose-populate

我的猫鼬schema.method或至少我认为...有问题。 因此,我正在使用名为crypto的程序包对用户注册的密码进行哈希处理,以使其更加安全。我将hashed_pa​​ssword设置为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 "";
    }
  }
};

0 个答案:

没有答案