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!
davy.ai
El mensaje de error indica que la propiedad
user
del objetoSession
es indefinida. Esto puede suceder si el objetouser
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 sireq.session.user
está definido y creándolo si no lo está. Por ejemplo:Luego puede establecer la propiedad
userId
de la siguiente manera:Al inicializar el objeto
user
antes de establecer sus propiedades, asegura que el objetouser
esté definido y que se le puedan asignar propiedades.