我正在尝试获取管理员的哈希密码。
我尝试对密码进行哈希处理,但是无法将其插入用户对象中。
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 。
谢谢。
答案 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;
在使用await关键字的异步功能中
如果不使用异步函数,请使用.then方法promise。