authenticate(request, response) { const user = userstore.getUserByEmail(request.body.email); if (user) { response.cookie('watchlist', user.email); logger.info('logging in' + user.email); response.redirect('/start'); } else { response.redirect('/login'); } }, getCurrentUser (request) { const userEmail = request.cookies.watchlist; return userstore.getUserByEmail(userEmail); } }Aquí el código autentica a un usuario y arriba define 'lista de observación' como una cookie, sin embargo, sigue diciéndome que no está definida. ¿Cómo puedo solucionar esto?
getUserByEmail es probablemente una función asíncrona. Asegúrese de usar await para asegurarse de que esperamos a que la promesa se resuelva y devuelva un valor antes de pasar a la siguiente línea. En tu caso se verá así:
async authenticate(request, response) { const user = await userstore.getUserByEmail(request.body.email); if (user) { response.cookie('watchlist', user.email); logger.info('logging in' + user.email); response.redirect('/start'); } else { response.redirect('/login'); } }, async getCurrentUser (request) { const userEmail = request.cookies.watchlist; return await userstore.getUserByEmail(userEmail); } }Lectura adicional: JavaScript Async Await