Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

156
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda