1 回答
TA贡献1843条经验 获得超7个赞
在对象字面量中,password : bcrypt.hash(this.password, salt) 调用 bcrypt.hash并将其返回值分配给password属性。在您显示的代码中,this 不是指正在创建的对象,而是指同一件事this指的是创建对象文字的位置(模块的顶层)。由于它没有属性password,因此您将传递undefined给该函数。
bcrypt.hash还返回一个承诺,正如您从未处理的承诺拒绝之前获得的输出中看到的那样。
您的user对象正在填充硬编码值,因此您可能打算执行以下操作:
const bcrypt = require('bcryptjs');
const salt = bcrypt.genSalt(11);
bcrypt.hash("secondhand01", salt) // <=== Encrypt the password
.then(hashedPassword => {
// You have it now, you can build and use the object
const user = {
first: "Donald",
last: "Trump",
password : hashedPassword,
greetUser() { // Note I removed the parameter you weren't using here
console.log(`Hi, ${this.first} ${this.last} ${this.password}`);
},
};
user.greetUser(); // Note I removed the unused argument here
})
.catch(error => {
// Handle/report the error...
});
添加回答
举报