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

377
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 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