【发布时间】:2020-01-25 07:57:00
【问题描述】:
我在我的 Express 应用中使用 Mysql 我在 mysql db 中使用 bcryptjs 对用户进行哈希处理,并且很好。 使用此代码:
// register
router.post("/register", async (req, res) => {
const hashed = await bcrypt.hash(req.body.pass, 10);
const user = {
uname: req.body.uname,
phone: req.body.phone,
pass: hashed
};
let sql = "INSERT INTO user SET ? ";
db.query(sql, user, (err, result) => {
if (err) throw err;
console.log(`${user.uname} INSERTED INTO users`);
});
});
// GET USERS
router.get("/users", (req, res) => {
db.query("SELECT * FROM user", (err, results) => {
if (err) {
return res.send(err);
} else {
return res.json({
data: results
});
}
});
});
但是当我想登录用户并让 bcrypt 将请求的通行证与用户通行证进行比较时,它会给我这个错误:
SyntaxError: Unexpected identifier
这就是我尝试过的:
// loggin
router.post("/login", async (req, res) => {
var username = req.body.uname;
var password = req.body.pass;
db.query(
"SELECT pass FROM user WHERE uname = ?",
[username],
(err, result, fields) => {
try {
if (await bcrypt.compare(password, result)) {
console.log('Success')
}
} catch {
console.log('catched')
}
}
);
});
【问题讨论】:
-
db.query()的回调函数不是异步的,不能在里面使用await。 -
@Barmar true :) 但现在错误不同了:
Error: Illegal arguments: string, object
标签: javascript mysql node.js express bcrypt