Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

669
Visualizações
Almacenamiento de variables en sesión con ejs y node js

Estoy tratando de pensar en una solución para el siguiente problema: tengo una variable que debe estar separada para cada visitante único en la página. Es una lista simple que se completa cuando un visitante hace clic en algunos elementos de la página. Estaría vacío para cada visita única. Actualmente lo mantengo en el backend, es una solución bastante mala ya que todos los que usan la aplicación actualmente se agregan a la misma lista

El código de fondo:

 thelist=[] app.get("/show/:id", function (req, res) { var id = req.params.id; thelist.push(id) console.log(thelist); res.redirect('/') }); app.get("/run", function(req, res) { res.render("data", {data: thelist}) thelist = [] });

El punto principal es que la lista se pasa luego a un script de python que también está conectado a través de thelist a la aplicación. Por lo tanto, necesito que la variable permanezca en el backend. También estaba pensando en mantenerlo simple, por lo que no quiero obligar a los usuarios a crear una cuenta para usar la aplicación, por lo que lo que estoy buscando es algún tipo de cookies/caché/cualquier otra forma de almacenamiento de sesión.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Puede crear un mapa de sesión (como hashmaps). Lo he integrado en uno de mis proyectos y funciona perfectamente. A continuación se muestra el código y cómo puede acceder a él:

hashmap.js

 var hashmapSession = {}; exports.auth = auth = { set : function(key, value){ hashmapSession[key] = value; }, get : function(key){ return hashmapSession[key]; }, delete : function(key){ delete hashmapSession[key]; }, all : function(){ return hashmapSession; } };

aplicación.js

 var hashmap = require('./hashmap'); var testObj = { id : 1, name : "john doe" }; hashmap.auth.set('test', testObj); hashmap.auth.get('test'); hashmap.auth.all(); hashmap.auth.delete('test');

Puede usar este enfoque como almacenamiento de sesión para su aplicación de nodo. Tenga en cuenta que este almacenamiento solo será persistente para la sesión actual.

over 4 years ago · Santiago Trujillo Relatório

0

La mejor solución aquí sería una sesión expresa ( https://github.com/expressjs/session )

Cuando veo su código, puedo darme cuenta de que está usando express . Y si está utilizando express, eso es suficiente para el siguiente código.

Esta es la forma más fácil con un código mínimo para lograr lo que está buscando:

Ejemplo:

 app.set('oneSetting', 'one'); console.log(app.settings.oneSetting);

O

 app.set('port', 3000); app.get('port'); //3000

También puede acceder a las mismas variables en el objeto req, ejemplo:

 req.app.get('port')
over 4 years ago · Santiago Trujillo Relatório

0

¿Por qué no usas la sesión expresa?

Puedes usarlo de la siguiente manera:

Aplicación.js

 var app = express(); app.use(session({ secret: 'keyboard cat', resave: false, saveUninitialized: true, cookie: { secure: true } }))

Controlador.js

 //Sets the id in the session object. app.get('/show/:id', function (request, response, next) { request.session.id = id; }) //Retrieve the id from the session object. app.get('/showMyId',function(request,response,next)){ response.send(request.session.id;); })

De esta manera, no tiene que administrar la lista global y todas sus identificaciones estarían presentes dentro de su respectivo objeto de sesión.

Este enfoque utiliza una sesión de cookies, también hay estrategias alternativas disponibles para almacenar su objeto de sesión como un servidor de almacenamiento adecuado.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda