为什么在使用 bcryptjs 时,“pre”函数主要与 userSchema 一起使用?

问题描述 投票:0回答:3

在express中使用bcrypt时,我大多看到“pre”函数被用作userSchema.pre('save', async function(){..})。
我知道它是一个中间件,在.save()之前运行函数来加密密码,但是将“pre”与 userSchema 一起使用的逻辑是什么?..像 userSchema.pre()

node.js mongodb express mongoose mongodb-atlas
3个回答
0
投票

当我们使用bcrypt时,我们需要在将密码添加到数据库之前(预)对其进行哈希处理,因此此过程是在保存前完成的,而不是在保存后(后)进行的,我们无法在保存后对密码进行哈希处理,它在保存之前进行了哈希处理


0
投票

嗯,这只是在存储文档之前对其进行操作的一种便捷方式,例如为了确保密码不会以明文形式存储并转换为哈希值(正如您提到的,这通常是使用 bcrypt 完成的)。

这里有一篇很好的文章,详细解释了:https://www.thepolyglotdeveloper.com/2019/02/hash-password-data-mongodb-mongoose-bcrypt/


0
投票

Pre() 是一个 mongoose 方法,我们可以使用它在创建模式对象之前执行操作。它返回您使用 mongoose schema 定义的 schema 对象。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.