我尝试向db插入加密值,我可以加密无法在db中插入加密值的值。
app.post('/insert', function (req, res) {
// var Fname=req.body.fname;
// var Lname=req.body.pwd;
var data = {
Fname: req.body.fname,
Lname: req.body.Lname
};
function hashP(getit, cb) {
bcrypt.genSalt(15, function (err, salt) {
if (err) {
return console.log(err);
}
cb(salt);
bcrypt.hash(getit, salt, function (err, gotit) {
if (err) throw err;
return this.cb(null, gotit);
})
})
}
hashP(data.Lname, function (err, gotit) {
if (err) throw err;
data.Lname = hash;
})
console.log(data.Lname);
con.query("insert into test set ?", [data], function (err, rows) {
if (err) throw err;
res.send("Value has bee inserted");
})
})
这是我的html表单页面:
<body>
<form action="http://localhost:8888/insert" method="POST" >
<label>Name:</label><input type="text" name="fname"></br>
<label>Lname:</label><input type="text" name="Lname"></br>
<button type="submit">Submit</button>
</form>
</body>
答案 0 :(得分:0)
好像你的函数hashP(getit,cb)
在错误的时间调用cb
函数似乎不是吗?尝试以下
function hashP(getit, cb){
bcrypt.genSalt(15, function (err, salt){
if(err) {
return cb(err, null);
}
bcrypt.hash(getit, salt, function (err, hash){
if(err) {
return cb(err, null);
}
return cb(null, hash);
})
})
}
除此之外,您还需要在处理程序中调用它,如下所示:
app.post(...., function(req, res) {
var data = { ... }
function hashP(data, cb){ ... }
hashP(data.Lname, function (err, hash) {
if (err) throw err;
data.Lname = hash;
// NOW, SAVE THE VALUE AT DB
con.query("insert into test set ?", [data], function (err, rows) {
if (err) throw err;
res.send("Value has bee inserted");
})
}
}
这里的问题是异步执行,在{{1>} con.query
从{{1}返回之前,您使用data
调用data
}}