es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede asignar una propiedad al objeto sesión incluso después de la combinación de declaraciones.

Estoy intentando usar express-session para guardar las sesiones de inicio de sesión de mis usuarios, pero no puedo agregar una propiedad al objeto sesión. Usé la fusión de declaraciones para agregar un objeto user a la sesión de express-session de la siguiente manera:

import 'express-session';

declare module 'express-session' {
    interface Session {
        user: { [key: string]: any };
    }
}

VSCode también reconoce que la sesión tiene un objeto user. Desafortunadamente, cuando intento asignar un userId a user, obtengo el siguiente error:

"Cannot set properties of undefined (setting 'userId')"

La asignación se realiza de la siguiente manera:

req.session.user.userId = user.id;

donde user.id es un número.

¿Alguna sugerencia? ¡Gracias!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que la propiedad user del objeto Session es indefinida. Esto puede suceder si el objeto user no ha sido inicializado antes de intentar establecer sus propiedades.

    Para solucionar este problema, puede inicializar el objeto user antes de establecer sus propiedades. Puede hacer esto comprobando si req.session.user está definido y creándolo si no lo está. Por ejemplo:

    if (!req.session.user) {
      req.session.user = {};
    }
    

    Luego puede establecer la propiedad userId de la siguiente manera:

    req.session.user.userId = user.id;
    

    Al inicializar el objeto user antes de establecer sus propiedades, asegura que el objeto user esté definido y que se le puedan asignar propiedades.

Comments are closed.