Estoy desarrollando un sistema de autenticación de usuarios con expressjs. Por lo tanto, para almacenar datos de usuario, uso una base de datos mysql ... Cuando consulto mi base de datos, lo hago con esto: SELECT password FROM USERS WHERE email=EmailHere
El problema con esto es que no conozco una solución elegante para devolver un mensaje de error si el correo electrónico no existe. Algo comprensible?
Entonces, para concluir : quiero saber si ese valor existe cuando consulto a la base de datos para no recibir un mensaje de error.
Editar:
const query = `SELECT password FROM USERS WHERE email=?;`; let [rows, fields] = await db.promise().query(query, [req.body.email]); const password = rows[0].password; console.log(password);Esto me da el error: No se pueden leer las propiedades de la 'contraseña' de lectura indefinida.
Entonces está tratando de acceder a la columna .password. ¿Puedo evitar eso?
¡Gracias por adelantado! Qué tengas un lindo día
Bien resulta:
Si verifico si la longitud de las filas Array> 0 soluciona el problema. En la declaración else, simplemente puedo cerrar la sesión con un mensaje de error para decir que el usuario no existe. Esto podría ser algo como esto:
if (!rows.length > 0) return res.status(400).send('User doensnt exist!'); const password = rows[0].password; // Declaring the variable after I know it exists.¡Gracias a @danblack por esta respuesta!
intenta cambiar la consulta así
SELECT password FROM USERS WHERE email like '%';o
SELECT password FROM USERS WHERE email='%';por favor, si encuentra una solución, no olvide marcarla como respuesta.