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

381
Views
¿Detener la ejecución del código después de devolver la respuesta en Node JS?

Soy nuevo en Node JS. Estoy practicando para construir una aplicación MERN. Tengo dos funciones getUserById e isSignedIn . Estas dos funciones son middlewares.

 router.param("userId",getUserById) const getUserById = (req,res,next,id)=>{ User.findById(id).exec((err,user)=>{ if(err){ return res.json({ error:"Unable to process request", status: false, }) } console.log(1234); if(!user){ return res.json({ error:"User doesn't exist", status: false }) } req.user=user; next() }) } const isSignedIn = (req,res,next)=>{ const token = req.headers.authorization.split(" ")[1] jwt.verify(token, process.env.SECRET_KEY, (err, decoded)=>{ if(err){ return res.json({ status: false, error: "Invalid Token" }) } console.log(123); req.auth=decoded next() }) }; router.post("/api/create/:userId",isSignedIn,(req,res)=>{ res.send("Success")})

Este es mi entendimiento. Si en la URL se encuentra el userId de usuario, se ejecutará getUserById y luego se iniciará sesión. En getUserById , si hubo un error o si el usuario no existe, se enviará una respuesta y la ejecución del código se detendrá allí. Pero en isSignedin si el token no es válido, envío una respuesta como Invalid Token y la ejecución del código debería detenerse allí. Pero el código después de if también se ejecuta, ¿por qué es así?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Intenta seguir el código

 router.param("userId",getUserById) const getUserById = async (req,res,next,id)=>{ try { const user = await User.findById(id) if(!user){ return res.json({ error:"User doesn't exist", status: false }) } else { req.user=user; next() } } catch (err) { return res.json({ error:"Unable to process request", status: false, error: JSON.stringify(err), }) } } const isSignedIn = async (req,res,next)=>{ const token = req.headers.authorization.split(" ")[1] try { const decoded = await jwt.verify(token, process.env.SECRET_KEY) if (decoded) { req.auth=decoded next() } } catch (err) { if(err){ return res.json({ status: false, error: "Invalid Token" }) } } }; router.post("/api/create/:userId",isSignedIn,(req,res)=>{ res.send("Success")})
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!