获取模型实例时键入Error

时间:2016-12-26 06:06:03

标签: javascript node.js mongoose

我添加了一个钩子来获取用户模型的实例以加密用户密码。但我无法获取模型的实例。

这是我的代码

regUsers.pre('save',(next)=>{
      // get access to this user model
      const user = this;

      // generate salt the run call back
      bcrypt.genSalt(10,(err,salt)=>{

         if(err){ return next(err);}

        // hash(encrypt) our password using salt
         bcrypt.hash(user.password,salt,null,(err,hash)=>{

              if(err){ return next(err);}

              //overwrite plain text password with encrypted password
              user.password = hash;

              next();
         });
      })
});

我得到一个Type错误 TypeError:无法读取未定义的属性'password'。 为什么我得到这个erorr的任何理由?以及如何克服这个问题?

1 个答案:

答案 0 :(得分:1)

这是因为您正在使用arrow function,尝试使用经典函数表达式。

可能Mongoose使用call()apply()(或类似的东西)调用该回调来为其提供所需的上下文(在这种情况下,是对正在更新的文档的引用)。