您正在节点中处理异步函数。js,所以这是预期的结果。为了更清楚地了解问题,请尝试
console.log
之前的数据
bcrypt.compare
。我可以肯定地说,它等于
""
。
然后尝试将比较函数移动到
.hash
回调函数
var bcrypt = require('bcrypt');
let data = "";
bcrypt.genSalt(10, function(err, salt) {
bcrypt.hash("my password", salt, function(err, hash) {
console.log(hash);
data = hash;
console.log(data);
bcrypt.compare("my password", data, function(err, res) {
console.log(res)
});
});
});
console.log('data')
您可以使用异步/等待函数使其看起来像同步代码,并消除回调。幸运的是
bcrypt
支持由使用的promise接口
async/await
const salt = await bcrypt.genSalt(10);
const hash = await bcrypt.hash("my password", salt);
const result = await bcrypt.compare("my password", data);
console.log(result);