gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 09:20:08 28 4
gpt4 key购买 nike

我正在尝试在我正在构建的应用程序中散列密码,当我通过调用此函数 (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

但是当我进行更新并拥有这个 pre 时:

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

我得到 TypeError: user.isModified is not a function 如果我在 pres 中控制台登录用户,save pre 记录我正在更新的用户,findandupdate pre 没有,id 有办法在 pre 中访问文档还是我需要以其他方式执行此操作?

最佳答案

您收到错误消息是因为箭头函数更改了“this”的范围。只需使用

UserSchema.pre('save', function(next){})

关于node.js - 在 mongoose 中进行预更新时,user.isModified 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40161459/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com