我正在学习如何对字符串密码进行哈希处理,并将其存储在对象列表中.

const bcrypt = require('bcrypt')

var users = []

async function hashPass(pass)
{
    try {
        const salt = await bcrypt.genSalt(10)
        
        console.log(`Hashing Password: ${pass}`)

        const hashedPass = await bcrypt.hash(pass, salt)

        console.log(`Hashed Password: ${hashedPass}`)

        return hashedPass

    } catch (error) {
        console.log(error)
    }
}

const password = hashPass('pass')

users.push({
    'ID': 0,
    'Name': 'Ali',
    'Email': 'alihaisul.me@gmail.com',
    'Password': password
})

console.log(users)

-你在做什么?

[
  {
    ID: 0,
    Name: 'Ali',
    Email: 'alihaisul.me@gmail.com',
    Password: Promise { <pending> }
  }
]
Hashing Password: pass
Hashed Password: $2b$10$r52Lu1K.WxOEcAdyeMBV4eR3EPGRXsgJjktJMXFGY5F7a.Q6yoH1C

我一直在输出中得到"Promise{Pending}".我研究并try 使用Async、AWait,甚至‘Then()’.我错过了什么吗?

推荐答案

hashPass函数使用async/await个关键字时,它返回一个Promise对象,您将得到该对象作为输出.

在将新的用户对象推入users数组之前,需要对hashPass函数的结果进行await处理.以下是如何修改代码来实现这一点:

const bcrypt = require('bcrypt');
var users = [];

async function hashPass(pass) {
  try {
    const salt = await bcrypt.genSalt(10);        
    console.log(`Hashing Password: ${pass}`);
    const hashedPass = await bcrypt.hash(pass, salt);
    console.log(`Hashed Password: ${hashedPass}`);

    return hashedPass;
  } catch (error) {
    console.log(error);
  }
}

async function createUser() {
  const password = await hashPass('pass');

  users.push({
    'ID': 0,
    'Name': 'Ali',
    'Email': 'alihaisul.me@gmail.com',
    'Password': password
  });

  console.log(users);
}


createUser();

Javascript相关问答推荐

Express.js:使用Passport.js实现基于角色的身份验证时出现太多重定向问题

获取表格的左滚动位置

如何通过在提交时工作的函数显示dom元素?

如何才能拥有在jQuery终端中执行命令的链接?

从mat—country—select获取整个Country数组

WebRTC关闭navigator. getUserMedia正确

如何从html元素创建树 struct ?

如何根据当前打开的BottomTab Screeb动态加载React组件?

优化Google Sheet脚本以将下拉菜单和公式添加到多行

映射类型定义,其中值对应于键

第三方包不需要NODE_MODULES文件夹就可以工作吗?

如何在Node.js中排除导出的JS文件

为什么JPG图像不能在VITE中导入以进行react ?

一个实体一刀VS每个实体多刀S

我想使用GAS和HTML将从Electron 表格中获得的信息插入到文本字段的初始值中

使用jQuery find()获取元素的属性

自动滚动功能在当前图像左侧显示上一张图像的一部分

P5JS-绘制不重叠的圆

ReferenceError:无法在初始化之前访问setData

如何在Java脚本中并行运行for或任意循环的每次迭代