¿Cómo encontrar elementos de una matriz en npm?
Estoy tratando de encontrar el usuario con el correo electrónico y la contraseña ingresados a partir de esta matriz ficticia de usuarios, pero obtengo “indefinido” en el valor de retorno y, por lo tanto, no puedo iniciar sesión. Si ejecuto este código en la consola, obtengo la salida correcta. ¿Alguien puede ayudar con por qué esta función find (en la solicitud post) no funciona en Node?
Array ficticia:
const users = [
{ id: 1, name: ‘Sherry’, email:’sherry@gmail.com’, password: 1234 },
{ id: 2, name: ‘harry’, email:’harry@gmail.com’, password: 1234 },
{ id: 3, name: ‘cherry’, email:’cherry@gmail.com’, password: 1234 }
]
Solicitud GET:
app.get(‘/login’, (req, res) => {
res.send(<form method='POST' action='/login'>
);
<input type="email" name="email" placeholder="Ingrese correo electrónico">
<input type="password" name="password" placeholder="Ingrese contraseña">
<input type="submit">
</form>
})
Solicitud POST:
app.post(‘/login’, (req,res) => {
const { email, password } = req.body;
console.log(email)
console.log(password)
console.log(users)
let user1 = users.find((user) => user.email === email && user.password === password);
console.log(user1);
if(user1) {
req.session.userId = user.id
return res.redirect('/home')
}
res.redirect('/')
})
Problema: User1 es “indefinido”.
davy.ai
Podría haber varias razones por las que
user1
no está definido:req.body
se está analizando correctamente por el middleware. Asegúrese de incluir el siguiente middleware para analizar el cuerpo de la solicitud:Alternativamente, también puede usar el paquete
body-parser
.Verifique si los valores de correo electrónico y contraseña son correctos y coinciden con alguno de los objetos de usuario en el arreglo
users
.Puede agregar un registro de consola dentro de la función
find
para verificar si realmente está encontrando al usuario correcto:Puede usar el método
trim()
para eliminar cualquier carácter de espacio en blanco al principio o al final de los valores de correo electrónico y contraseña:También puede usar una comparación que no distinga entre mayúsculas y minúsculas convirtiendo ambas cadenas a minúsculas:
Asegúrese de cambiar también los campos de entrada de correo electrónico y contraseña en el formulario de inicio de sesión a minúsculas en este caso.