我感觉自己快要到了,但是对异步的不完全理解使我无法解决这个问题。我基本上是在尝试使用bcrypt哈希密码,并决定将hashPassword函数分离出来,以便可以在应用程序的其他部分中使用它。
hashedPassword 不断返回undefined …
hashedPassword
userSchema.pre('save', async function (next) { let user = this const password = user.password; const hashedPassword = await hashPassword(user); user.password = hashedPassword next() }) async function hashPassword (user) { const password = user.password const saltRounds = 10; const hashedPassword = await bcrypt.hash(password, saltRounds, function(err, hash) { if (err) { return err; } return hash }); return hashedPassword }
await剂量等待bcrypt.hash因为不退bcrypt.hash诺。请使用以下方法,该方法将Promise包裹起来bcrypt才能使用await。
await
bcrypt.hash
bcrypt
async function hashPassword (user) { const password = user.password const saltRounds = 10; const hashedPassword = await new Promise((resolve, reject) => { bcrypt.hash(password, saltRounds, function(err, hash) { if (err) reject(err) resolve(hash) }); }) return hashedPassword }