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

378
Views
Problema de tiempo de espera de solicitud - Nodo/Heroku

Esta ruta de publicación a continuación se agota aproximadamente 1/100 veces. Estoy tratando de optimizar el código para evitar estos tiempos de espera, pero continúan ocurriendo. ¿Hay algo que pueda hacer para evitar estos tiempos de espera de solicitud?

No estoy seguro de cómo solucionar este problema. Esta ruta no debería tardar más de 30 segundos en publicarse.

¡Gracias por cualquier ayuda!

 router.post("/updateAccount", usernameToLowerCase, async function(req, res){ if (req.user) { await User.findOne({username: req.body.currentUser}, function(err, user) { console.log('first ' + user) if (err) { console.log('cant find user err' + err) return done(err); } user.username = req.body.username; user.password = req.body.password; user.accountUpdated = true; user.save(function(err){ if (err) { req.flash("error", "It looks like that email address is taken. Please use a different email address"); res.redirect('back'); } else { req.logout(); req.login(user, function(err) { if (err) console.log('There was an account error' + err) req.flash("success", "Your account has been created! Your username is " + user.username ); res.redirect('/results') }); } }); }); } });
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

puede usar findOneAndUpdate que encuentra un documento coincidente, lo actualiza de acuerdo con el argumento de actualización

 try{ let filter = {username: req.body.currentUser}; let user = { username = req.body.username; password = req.body.password; accountUpdated = true } let user = await User.findOneAndUpdate(filter, user,{ select: "_id username", new: true, }); req.logout(); req.login(user, function(err) { if (err) console.log('There was an account error' + err) req.flash("success", "Your account has been created! Your username is " + user.username ); res.redirect('/results') }); } catch(error){ console.log(error) req.flash("error", "It looks like that email address is taken. Please use a different email address"); res.redirect('back'); //handle error }
over 4 years ago · Santiago Trujillo Report

0

Creo que, dado que obtiene 1 de cada 100 solicitudes de tiempo de espera, se trata más de un problema de devolución de llamada, ya que el evento asíncrono está en cola y no se produce ningún error.

También creo que req.logout(), que es una solicitud asíncrona, debe manejarse antes de req.login().

Verifique estos puntos antes de calcularlo como un problema de consulta.

over 4 years ago · Santiago Trujillo Report

0

Intente agregar más índices a su modelo de usuario y use más de un campo para encontrar lo que ayudará a aumentar la velocidad de la operación.

agregar un índice único en el nombre de usuario archivado ayudará

también puede usar Model.updateOne() para actualizar el documento sin cargarlo desde la base de datos para que el documento no esté en la memoria de proceso de Node.js

si eso no ayuda, puede aumentar el tiempo de espera para el servidor a cualquier número que desee

 var server = app.listen() server.timeout = 2000

pero en tu caso estás hablando de 30 seg. que es mucho tratar de usar

 try{}catch(){}

y ver si algún error no se maneja correctamente

over 4 years ago · Santiago Trujillo 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!