Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

158
Vistas
Publicar solicitud activando todas las sentencias if else y redirigiéndolas

Estoy creando una página de inicio de sesión como mi primer proyecto express. cuando estoy enviando una solicitud de publicación con la declaración if/else, redirigiéndolos en función de la entrada, está ejecutando toda la declaración if else y activando el mensaje que el encabezado no puede establecer después de que se envían al cliente. Después de verificar otras respuestas, descubrí que se está ejecutando all if else request. Así que eliminé la declaración else. Funcionó bien, pero necesito tanto if/else para dirigir al usuario a las páginas si sus credenciales son incorrectas. Amablemente ayuda en lo que puedo hacer para eliminar este error.

 const express = require('express'); const bodyParser = require('body-parser'); const app = express(); app.set('view engine','ejs'); app.use(bodyParser.urlencoded({extended: false})) var data=[{fname:"john",pass:"dawd123"},{fname:"red",pass:"qwerty"}]; var nameStore=""; app.get("/",function(req,res){ res.render("login"); }); app.post("/",(req,res)=>{ n1 = req.body.uname; n2 = req.body.password; for(let i=0;i<data.length;i++){ if(data[i].fname===n1 && data[i].pass===n2){ nameStore = data[i].fname; res.redirect("/home"); } else{ res.redirect("/"); } } }); app.get("/home",(req,res)=>{ res.render("home",{name:nameStore}); });
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Lo que estás haciendo mal es tener un bucle que envía respuestas. es una mala idea Lo que quieres lograr se puede hacer de una manera más limpia, así:

 const express = require('express'); const bodyParser = require('body-parser'); const app = express(); app.set('view engine','ejs'); app.use(bodyParser.urlencoded({extended: false})) var data=[{fname:"john",pass:"dawd123"},{fname:"red",pass:"qwerty"}]; var nameStore=""; app.get("/",function(req,res){ res.render("login"); }); app.post("/",(req,res)=>{ n1 = req.body.uname; n2 = req.body.password; if(data.some(d=>d.fname === n1 && d.pass === n2)){ return res.redirect("/home"); } res.redirect("/"); }); app.get("/home",(req,res)=>{ res.render("home",{name:nameStore});

Explicación sobre some método de MDN:

El método some() prueba si al menos un elemento de la matriz pasa la prueba implementada por la función proporcionada. Devuelve verdadero si, en la matriz, encuentra un elemento para el cual la función proporcionada devuelve verdadero; de lo contrario, devuelve falso. No modifica la matriz.

Más detalles de lo que estás haciendo mal:

Una función de controlador de enrutador solo debe devolver una respuesta por solicitud. En su caso, si por ejemplo el usuario no está en la matriz de data , terminaría con data.length number of res.redirect("/"); por solicitud.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda