MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Archiviazione NodeJS + Express + Mongo Session

Finì per essere un problema dei vari moduli:connect-session-mongo / express-session-mongo / connect-mongo, usando connect 2.0.1 ed Express usando connect 1.8.5.

Apparentemente lo scontro di dipendenze qui ha impedito ai moduli dell'archivio sessioni di accedere alla proprietà 'req.secret'.

Per farlo funzionare ho finito di usare il modulo connect-mongodb che sta ancora usando connect 1.8.5, proprio come Express.

Il motivo per cui prima non potevo far funzionare connect-mongodb era un errore dell'utente, ho cercato troppo di usare il copia/incolla dagli esempi online invece della mia testa.

Ecco il codice di configurazione che ha finito per funzionare per me con connect-mongodb:

var Session = require('connect-mongodb');

app.configure('production', function(){
  var oneWeek = 657450000;
  app.use(express.static(__dirname + '/../public', { maxAge: oneWeek }));

  var session = express.session({
        store: new Session({
              url: 'mongodb://localhost:27017/test', 
              maxAge: 300000
        }),
        secret: 'superTopSecret' 
  });
  app.use(session);

  app.use(mongooseAuth.middleware());
  app.use(require('./mySite').middleware());
  app.use(express.methodOverride());
  app.use(express.errorHandler());  
});

Spero che questo aiuti chiunque altro si imbatta in questo problema. Se hai qualche suggerimento/miglioramento su questa soluzione, sarei felice di ascoltarlo. :)