Sé que otras personas se han encontrado con esto, pero mi sesión Express no se guarda. Revisé tantas preguntas e hilos y pude pero no pude encontrar una solución. Por favor, hágame saber lo que estoy haciendo mal. ¡Gracias!
Aquí es donde se inicializa:
app.use(session({ secret: 'BigSecret', resave: true, cookie: { maxAge: 24 * 60 * 60 * 1000 * 7, //seven days secure: false }, saveUninitialized: true }));Y donde se usa en la ruta:
router.get('/route', async (req, res) => { if (!req.session.views) { req.session.views = 0; } else { req.session.views++ } console.log(req.session); ...the rest of the route... res.render('pages', { key: val, anotherKey: anotherVal } });Además, para algún contexto, estoy devolviendo una página EJS renderizada, así que ese es el renderizado al final.
El problema puede estar en este código aquí:
if (!req.session.views) { req.session.views = 0; } else { req.session.views++; } En la primera solicitud, el valor de req.session.views no estará undefined , por lo que !req.session.views se evaluará como true y establecerá el valor en 0 .
La siguiente solicitud, y todas las solicitudes posteriores, el valor de req.session.views será 0 . Cada vez que !0 se evaluará como true y simplemente establecerá el valor en 0 nuevamente.
Probablemente quieras cambiarlo a algo como if (!('views' in req.session)) o if (typeof req.session.views === 'undefined') etc.
Alternativamente, es posible que desee establecer simplemente req.session.views = 1; en la primera solicitud ya que esta es la primera vista. Luego, en la segunda solicitud !req.session.views será !1 , que se evaluará como false , y su valor se incrementará.