当前位置 : 主页 > 网页制作 > Nodejs >

node.js – user.isModified在mongoose中进行预更新时不是函数

来源:互联网 收集:自由互联 发布时间:2021-06-16
我正在尝试在我正在构建的应用程序中散列密码,并且当我通过调用此函数(coffeesctipt)创建用户时它们正在散列: UserSchema.pre 'save', (next) - user = this hashPass(user, next)hashPass = (user, next) - #
我正在尝试在我正在构建的应用程序中散列密码,并且当我通过调用此函数(coffeesctipt)创建用户时它们正在散列:

UserSchema.pre 'save', (next) ->
  user = this
  hashPass(user, next)

hashPass = (user, next) ->
  # only hash the password if it has been modified (or is new)
  if !user.isModified('password')
    return next()
  # generate a salt
  bcrypt.genSalt SALT_WORK_FACTOR, (err, salt) ->
    if err
      return next(err)
    # hash the password using our new salt
    bcrypt.hash user.password, salt, (err, hash) ->
      if err
        return next(err)
      # override the cleartext password with the hashed one
      user.password = hash
      next()
      return
    return

但是当我做更新并且有这个时:

UserSchema.pre 'findOneAndUpdate', (next) ->
  user = this
  hashPass(user, next)

我得到TypeError:user.isModified不是一个函数,如果我控制日志用户在预先保存预先记录我正在更新的用户,findandupdate pre不会,id那里可以访问pre中的文件或者我需要另一种方式呢?

您收到错误,因为箭头函数会更改“this”的范围.
只是用

UserSchema.pre('save', function(next){})
网友评论