如何解决Bcrypt 在散列代码后返回 [Object Promise] 或 Promise { <pending> }
我正在为 React 应用创建一个帐户注册系统。我在尝试使用 Bcrypt
散列密码时遇到问题。我用来散列密码的函数在这里:
async function genPassword(password) {
let hashpass = bcrypt.hash(String(password),9)
return hashpass
}
const sql = "INSERT INTO USER (userFName,UserLName,userPhone,IsDelete,userEmail,userPassword) VALUES (?,?,?);"
db.query(sql,[fname,lname,phone,email,String(genPassword(password))],(err,data,fields,) => {
//Code to follow omitted
我把它上传到我的数据库,但在 MysqL 工作台中得到了这个值作为密码:Screenshot
如您所见,我得到的是 [Object Promise]
而不是散列。同样,我得到 Promise { <pending> }
当我 console.log 这个。
谁能看到我在这里做错了什么?当我使用 bcrypt 在一个单独的文件中散列它时,这工作正常,所以我很困惑我在哪里犯了错误。
解决方法
也许你可以使用这个:
const generatePassword = async (password) => {
return await new Promise((res,rej) => {
// Your hash logic
bcrypt.hash(password,10,(err,hash) => {
if (err) rej(err);
res(hash);
});
});
};
调用时:
const password = await generatePassword('1234');
hash 方法返回一个 promise,所以
如果您不想更改代码,只需使用 async/await
或 then
来解析承诺值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。