對于我的注冊頁面,我想在添加新用戶之前檢查現有用戶以避免重復用戶名。出于某種原因,在我檢查資料庫中是否存在現有用戶名后,它之后不會運行任何代碼。
app.post("/register", (req, res) => {
const username = req.body.username;
const password = req.body.password;
var newuser = false;
db.query("SELECT * FROM users WHERE username = ?;", [username], (err, result) => {
if (err) {
res.send({err: err})
}
if (result.length == 0) {
newuser = true;
console.log(newuser "one")
}
})
if (newuser) {
console.log(newuser "two")
bcrypt.hash(password, saltRounds, (err, hash) => {
if (err)
console.log(err)
db.query(
"INSERT INTO users (username, password) VALUES (?,?)",
[username, hash],
(err, result) => {
if (err)
console.log(err);
}
)
})
}
})
在這個例子中,我得到的唯一輸出是“trueone”……這意味著它將 result.length 評估為 0 并設定 newuser = true。
uj5u.com熱心網友回復:
這是因為您沒有等待第一次選擇的結果。您可以使用異步函式或將 if(new user) 條件移動到選擇回呼中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/322109.html
標籤:javascript mysql 表达 验证
下一篇:使用Go安全地執行資料庫遷移
