Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

161
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!