我正在尝试使用 bcrypt 和 nodejs/express 实现注册表单。
正如您将在下面看到的,我尝试设置User.password = hash;
,但由于某种原因,在将对象传递到 postgres 时,输入了未散列的密码。
下面的代码显示了一个微小的变化。我改了原来的
User.create({姓名、电子邮件、密码})
到
User.create({姓名、电子邮件、密码:哈希})
这在传递散列密码方面起作用,但对我来说没有意义......这不是必要的吗?我错过了什么?
任何帮助了解正在发生的事情将不胜感激。谢谢!
bcrypt.hash(newUser.password, salt, (err, hash) => {
if(err) throw err;
// Set password to hashed
User.password = hash;
console.log(hash);
// Save user
User.create({
name,
email,
password: hash
})
.then(user => {
res.redirect('/users/login')
})
.catch(err => console.log(err));
}))
最佳答案
因为 User
是(我相信)一个 Mongoose 模型,类似于 ECMAScript 6 中的类。直接在类本身上分配属性(这些是静态属性)不更改创建的项目。您正在做的是在 User
变量上创建一个新属性。
因此,为了使用简写属性表示法语法,您所需要做的就是使变量 password
等于 hash
:
bcrypt.hash(newUser.password, salt, (err, hash) => {
let password = hash;
User.create(name, email, password)
.then(user => res.redirect("/users/login"))
.catch(err => console.log(err));
关于node.js - 无法重新分配对象键值 - 我的语法是否不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58515992/