Bcrypt 哈希函数 returns 未定义的结果

Bcrypt hash function returns undefined result

在控制器中,我尝试使用这部分代码创建哈希并将其保存给用户。

router.post('/', (req, res)=>{
   console.log(req.body.password, process.env.SALT_ROUNDS);
   bcrypt.hash(req.body.password, process.env.SALT_ROUNDS, function (err, hash) {
        if(err) {
           res.status(500);
        }  
        console.log("hash ", hash, req.body.password);
        // await req.context.models.User.create({
        //     username: req.body.username,
        //     email: req.body.email,
        //     password: hash })
        //       .then(function(data) {
        //           console.log("user saved")
        //           if (data) {
        //           res.send(data);
        //       }
        //  });
   });
});

但是 hash 参数中回调函数的结果未定义。这是日志。

asd123 10

hash undefined asd123

问题出在哪里,散列未定义?

原来process.env.SALT_ROUNDS是一个字符串,从返回结果看不太懂。当我将它解析为数字 +process.env.SALT_ROUNDS 时,它起作用了。

asd123 10

hash b$Ty3JNeIBXUizrS85MsH8H.oTNsRtXzdiv9ZdamxnG7CmPD2CjSZG2 asd123