将BCrypt哈希传递给另一个函数

我想要使​​用BCrypt来encryption密码,然后将它传递给另一个函数来将其存储在数据库中。 问题是我不能成功通过它。 在write-to-db.js:18上收到错误:“ReferenceError:hashedPass未定义”

这部分代码encryption并且必须将散列发送到“write.registerUser()”

bcrypt.genSalt(saltRounds, function(err, salt){ bcrypt.hash(query.password, salt, function(err, hashedPass){ console.log(hashedPass); //I get the hash printed here with no problems write.registerUser(function(data, fName, lName, email, role, date, hashedPass){ return(); }); }); }); 

这是写入到db.js,我试图保存到数据库但失败:

  registerUser(Callback) { var sql = "INSERT INTO users_data (first_name, last_name, email, role, registration_date, active, password) VALUES ('"+fName+"', '"+lName+"', '"+email+"', '"+role+"', '"+date+"', '"+1+"', '"+hashedPass+"')"; con.query(sql, function (err, result) { if (err) throw err; Callback(result); }); } 

有任何想法吗?

改变你的注册用户function:

 registerUser(params, callback) { var sql = "INSERT INTO users_data (first_name, last_name, email, role, registration_date, active, password) VALUES ('"+params.fName+"', '"+params.lName+"', '"+params.email+"', '"+params.role+"', '"+params.date+"', '"+1+"', '"+params.hashedPass+"')"; con.query(sql, function (err, result) { if (err) throw err; callback(result); }); } 

并将您的哈希生成代码更改为:

 bcrypt.genSalt(saltRounds, function(err, salt){ bcrypt.hash(query.password, salt, function(err, hashedPass){ console.log(hashedPass); //I get the hash printed here with no problems write.registerUser({ data, fName, lName, email, role, date, hashedPass }, function(results){ console.log(results) return(); }); }); }); 

警告:这个SQL查询很容易受到SQL INJECTION的影响。 使用预准备语句或ORM是明智的。