我可以在密码哈希函数中创建用户对象吗?
Can I create a user object inside password hash function?
我正在学习后端 REST Api 教程,在视频中,他就是这样做的,创建一个用户对象,然后将 newUser.password 更改为生成的哈希值。
// Data is valid, register user
let newUser = new User({
name,
username,
password,
email,
});
// Hash password
bcrypt.genSalt(10, (err, salt) => {
bcrypt.hash(newUser.password, salt, (err, hash) => {
if (err) throw err;
newUser.password = hash;
newUser.save().then(user => {
return res.status(201).json({
success: true,
msg: "User is now registered"
})
})
})
})
为什么不一次全部完成?
// Why not do it in one go instaed of creating and then changing User?
bcrypt.genSalt(10, (err, salt) => {
bcrypt.hash(password, salt, (err, hash) => {
if (err) throw err;
let newUser = new User({
name,
username,
hash,
email,
});
newUser.save().then(user => {
return res.status(201).json({
success: true,
msg: "User is now registered"
})
})
})
})
一起做有什么问题吗?
由于 bcrypt 采用回调函数,因此您的哈希仅在回调函数的括号之间可用,这就是为什么要在这些括号之间进行赋值。由于您在这些括号之间声明了 newuser,因此 newuser 在更大范围内不可用
我正在学习后端 REST Api 教程,在视频中,他就是这样做的,创建一个用户对象,然后将 newUser.password 更改为生成的哈希值。
// Data is valid, register user
let newUser = new User({
name,
username,
password,
email,
});
// Hash password
bcrypt.genSalt(10, (err, salt) => {
bcrypt.hash(newUser.password, salt, (err, hash) => {
if (err) throw err;
newUser.password = hash;
newUser.save().then(user => {
return res.status(201).json({
success: true,
msg: "User is now registered"
})
})
})
})
为什么不一次全部完成?
// Why not do it in one go instaed of creating and then changing User?
bcrypt.genSalt(10, (err, salt) => {
bcrypt.hash(password, salt, (err, hash) => {
if (err) throw err;
let newUser = new User({
name,
username,
hash,
email,
});
newUser.save().then(user => {
return res.status(201).json({
success: true,
msg: "User is now registered"
})
})
})
})
一起做有什么问题吗?
由于 bcrypt 采用回调函数,因此您的哈希仅在回调函数的括号之间可用,这就是为什么要在这些括号之间进行赋值。由于您在这些括号之间声明了 newuser,因此 newuser 在更大范围内不可用