node.js - 无法重新分配对象键值 - 我的语法是否不正确?

标签 node.js object syntax promise bcrypt

我正在尝试使用 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/

相关文章:

node.js - 在 Keystone.js 中显示带有描述的图库图像时出现问题

javascript - 异步等待中的 try catch 问题

c++ - 嵌套类作为C++中父类的模板参数

php - PHP 中单引号和双引号字符串有什么区别?

php - 在 PHP 中使用 `new ClassName` 和 `new ClassName()` 创建对象的区别

node.js - NodeJS 如何将 JS 文件导入 TypeScript

node.js - 将 javascript 对象分配给新对象作为副本

python 'InlineResponse200' 对象不可下标

javascript - 无法访问嵌套对象数组内的数据

javascript - Javascript 中的原型(prototype)有什么作用?