Para mi página de registro, quiero verificar los usuarios existentes antes de agregar un nuevo usuario para evitar nombres de usuario duplicados. Por alguna razón, después de verificar si existe un nombre de usuario existente en la base de datos, no ejecuta ningún código después.
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); } ) }) } })En este ejemplo, el único resultado que obtengo es "trueone"... lo que significa que evaluó result.length a 0 y estableció newuser = true.
Es porque no estás esperando el resultado de la primera selección. Puede usar la función asíncrona o mover la condición if (nuevo usuario) a la devolución de llamada seleccionada.