2014-04-11 12 views
7

sto migrando express 3.x-express 4.xAggiornamento da 3.x espresso per esprimere 4.x - Mongo negozio sessione

sto avendo problemi a trovare un negozio di sessione di mongo che funziona con il nuovo session middleware.

precedenza:

express 3.x avevano connect come una dipendenza, che a sua volta è venuto con in bundle session middleware.

Per mantenere le sessioni in un database mongo, il middleware di fatto era connect-mongo.

Nuovo ordine mondiale:

Ora con express 4.x, connect non è più una dipendenza.

Come tale, praticamente tutto il middleware in bundle precedentemente è stato scomposto in middleware separato, come ad esempio session elencato sopra.

session prende un store, ma poiché connect-mongo dipende connect, è non è compatibile con express 4.x.

Domanda:

non riesco a trovare informazioni su che mongo negozio sessione da utilizzare durante la migrazione a express 4.x. Eventuali suggerimenti?

risposta

14

connect-mongo funziona ancora in express 4.x, tuttavia, è ora passa in session invece di express

espresso 3.x:

var express = require('express'); 
var mongoStore = require('connect-mongo')(express); // note parameter = express 

espresso 4.x:

var session = require('express-session'); 
var mongoStore = require('connect-mongo')(session); // note parameter = session 

NPM:

Sfortunatamente, al momento della scrittura, l'ultima versione di connect-mongo non è stata distribuita su npm.

EDIT: L'ultima versione di connect-mongo è stato distribuito a npm

è possibile scaricare l'ultima versione direttamente dal github

o un soluzione consiste nel creare un oggetto temporaneo:

{ 
    session: session 
} 

e passare questo a mongo-connect:

var mongoStore = require('connect-mongo')({session: session}); 
+1

Ho ancora problemi con questo. Ottenere questo errore 'var Store = connect.Store || connect.session.Store; ^ TipoErrore: impossibile leggere la proprietà 'Store' di undefined a module.exports (/Users/vinitkumar/projects/javascript/node-twitter/node_modules/connect-mongo/lib/connect-mongo.js:30:47) ' –

+0

@Vinit Stavo ricevendo lo stesso errore msg; guarda l'ultima riga della risposta, la risolve. – Venning

+0

@Vinit, sembra che tu stia passando in 'express' per' connect-mongo', non 'express-session'? –