Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

470
Vistas
Pasar variable global a otro archivo de controlador en Node.js

Creé una variable global (userEmail) que contiene el valor del usuario actual. La solicitud posterior maneja la autorización y asigna el correo electrónico del usuario actual a esa variable global. El problema surge al exportar esa variable global (correo electrónico de usuario) a otro archivo. Otro archivo lo lee como 'no asignado', tal vez porque module.export se ejecuta antes que route.post. ¿Cuál puede ser la solución para que la variable global en otro archivo sea alterada por la asignación de route.post al usuario actual?

 var userEmail = 'not assigned'; route.get('/', (req, res) => { res.render('signIn'); }) route.post('/', (req, res) => { let email = req.body["sign-in-email"]; let password = req.body["sign-in-password"]; let errorMessage = ''; userModel.findOne({ 'email': email }, 'email password balance', function (err, user) { if (err) return handleError(err); if (email == user.email) { if (bcrypt.compareSync(password, user.password)) { // function returns true if password matched the database hashed password userEmail = user.email; exports = {userEmail}; res.render('dashboard', { email: userEmail , balance: user.balance}) console.log(userEmail) } else { errorMessage = 'Invalid password' res.render('home', { errorMessage: errorMessage }); }; } else { errorMessage = 'User Not Found' res.render('home', { errorMessage: errorMessage }); } }); }) module.exports = {route, userEmail};
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

NodeJS tiene una variable global que puede usar para administrar valores globales. Aquí hay una muestra de la variable global. Si tiene una clase de registrador y desea tener su instancia globalmente en su entorno, puede hacer lo siguiente:

 global.logger = new Logger()
about 4 years ago · Juan Pablo Isaza Denunciar

0

Creé una variable global (userEmail) que contiene el valor del usuario actual.

Este es tu primer problema. No existe tal cosa como el "usuario actual". Puede haber varios usuarios que realicen solicitudes a su servidor http y cuyas solicitudes estén en proceso.

No puede mantener el estado específico de la solicitud o el estado específico del usuario en las variables globales. Agregue ese estado de información al objeto req para la solicitud para que otras partes del procesamiento de la solicitud puedan acceder desde allí (eso es lo que hace el middleware), agréguelo a una sesión de usuario que esté vinculada a un usuario específico y accesible desde cualquier solicitud de ese usuario o pasar ese estado a cualquier función que pueda necesitarlo mientras procesa la respuesta para una solicitud específica.

No puede poner un estado específico del usuario en una variable global. Múltiples solicitudes de diferentes usuarios sobrescribirán el estado global y se mezclarán entre las solicitudes de diferentes usuarios.


Por separado, esta estructura:

 module.exports = {route, userEmail};

exporta el valor actual de userEmail en el momento en que se inicializa el módulo (que será 'no asignado' en su código). A medida que cambia el valor de su variable userEmail , la exportación nunca cambia. Entonces, además del hecho de que esta no es la estructura correcta para una variable específica de solicitud (como se explicó anteriormente), tampoco puede exportar algo como esto.


En su situación específica, parece que desea que el valor userEmail esté disponible para futuras solicitudes de ese usuario. Hay varias formas de hacerlo, pero recomendaría usar express-session rápida y agregar el userEmail del usuario al objeto de la sesión de ese usuario. Ese objeto de sesión se vinculará a las solicitudes de ese usuario específico (a través de un identificador de sesión almacenado en una cookie) y los datos en el objeto de sesión del usuario estarán disponibles con todas las solicitudes futuras de ese usuario (dentro del límite de tiempo configurado de la cookie de sesión). ).

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda