请帮助我获取哈希密码

时间:2019-05-19 16:11:45

标签: javascript node.js express

我正在尝试获取管理员的哈希密码。

我尝试对密码进行哈希处理,但是无法将其插入用户对象中。

import encryptor from '../helpers/password';

let hashed_pswd = 'john123';
const hashPassword= async () => {
    const adminPwd = await encryptor.encryptPassword(hashed_pswd, 10);
    console.log(adminPwd);
}
hashPassword();

export default [
    {
        id: 1,
        first_name: 'john',
        last_name: 'doe',
        email: 'john@gmail.com',
        password: adminPwd,
        address: 'kigali',
        is_admin: true
    }
]

我能够在控制台中记录哈希密码,但是当我尝试发送POST请求时,却发现未定义 adminPwd

谢谢。

2 个答案:

答案 0 :(得分:3)

由于您在async/await函数中使用了hashPassword,因此您也可以将整个代码包装成一个并删除该函数。您应该将hashed_pswd变量重命名为更有意义的变量,因为该变量在该阶段没有被散列。我称它为password

import encryptor from '../helpers/password';

export default async () => {

  const password = 'john123';
  const hashedPassword = await encryptor.encryptPassword(password, 10);

  return [{
    id: 1,
    first_name: 'john',
    last_name: 'doe',
    email: 'john@gmail.com',
    password: hashedPassword,
    address: 'kigali',
    is_admin: true
  }];

};

要向import发送该模块,您必须使用async来包装代码,因为您要从async中的getUserData返回一个承诺。

import getUserData from './getUserData.mjs';

(async () => {

  console.log(await getUserData());

})();

答案 1 :(得分:-1)

为了解决此问题,您需要使用 let 而不是 {{ 1}} 全局范围或您的导出默认部分可以访问它的范围内

const

Refer to modified code snippet:

无论您在导入该文件时,在使用它之前都要调用导出的函数。

import encryptor from '../helpers/password'; let hashed_pswd = 'john123'; let adminPwd; const hashPassword = async () => { adminPwd = await encryptor.encryptPassword(hashed_pswd, 10); console.log(adminPwd); return [ { id: 1, first_name: 'john', last_name: 'doe', email: 'john@gmail.com', password: adminPwd, address: 'kigali', is_admin: true } ] } export default hashPassword;

  1. 在使用await关键字的异步功能中

  2. 如果不使用异步函数,请使用.then方法promise。