¿hay algo mal con mi código? yo uso express y mangosta
router.get('/c/:hashtoken', validateEmailToken, catchAsync(async(req,res)=>{ const hashtoken = req.params.hashtoken const hashtoken2 = createHash('sha256').update(hashtoken).digest('hex') const realHashTokens = await EmailToken.find({hashtoken2}) if(realHashTokens.length===0){ req.flash('error','Incorrect email verification token or Your account has been activated') return res.redirect('/') } const toDeleteTokenId = [] for(let realHashToken of realHashTokens){ let theUser = await User.findById(realHashToken.user) theUser.active = true await theUser.save() toDeleteTokenId.push(realHashToken._id) } for (let theId of toDeleteTokenId){ await EmailToken.findByIdAndDelete(theId) } req.flash('success','Success! Your account has been activated') return res.redirect('/') }))la pagina nunca ha respondido. sigue cargando, pero el usuario se activa si verifiqué en la base de datos
Establezca un controlador de errores o envuélvalo en try/catch. También agregue más declaraciones de depuración.
router.get('/c/:hashtoken', validateEmailToken, catchAsync(async(req,res)=>{ try { console.log('request received') const hashtoken = req.params.hashtoken const hashtoken2 = createHash('sha256').update(hashtoken).digest('hex') console.log('finding token') const realHashTokens = await EmailToken.find({hashtoken2}) if(realHashTokens.length===0){ req.flash('error','Incorrect email verification token or Your account has been activated') return res.redirect('/') } const toDeleteTokenId = [] console.log('finding user') for(let realHashToken of realHashTokens){ let theUser = await User.findById(realHashToken.user) theUser.active = true await theUser.save() toDeleteTokenId.push(realHashToken._id) } console.log('deleting') for (let theId of toDeleteTokenId){ await EmailToken.findByIdAndDelete(theId) } console.log('completed - redirecting') req.flash('success','Success! Your account has been activated') return res.redirect('/') } catch(e) { console.error(e) // res.sendStatus(500) req.flash('error', e.message) return res.redirect('/') } }))He resuelto el problema. el modelo de Usuario en este código tiene un middleware posterior a la mangosta y dentro de esa función, llamo a next() aunque no haya otro middleware posterior después de eso, por lo que el servidor responde con respuestas largas y la página sigue cargándose.