2014-04-11 19 views
7

我從express 3.x遷移到express 4.x升級到4.x的表達 - 蒙戈會話存儲

我在尋找一個蒙戈會話存儲與新session中間件工作的問題。

以前:

express 3.xconnect作爲依賴,而這又來到捆綁session中間件。

爲了在mongo數據庫中保留會話,事實上的中間件是connect-mongo

世界新秩序:

現在有了express 4.xconnect不再是依賴。因此,幾乎所有先前捆綁的中間件都被分解爲單獨的中間件,例如上面列出的session

session需要store,但由於connect-mongo取決於connect,是不符合express 4.x兼容。

問:

我找不到其MONGO會話存儲遷移到express 4.x時使用的信息。有什麼建議麼?

回答

14

connect-mongo仍然工作在express 4.x,但是,你現在在session通過express

快車3.x的,而不是:

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

快速4.x版:

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

NPM:

不幸的是,在撰寫本文時,最新版本的connect-mongo尚未部署到npm。

編輯:的connect-mongo最新版本已經部署到npm

您可以從github

下載最新版本直接或解決辦法是建立一個臨時對象:

{ 
    session: session 
} 

並將其傳遞給mongo-connect

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

我仍然有這個問題。得到這個錯誤'var Store = connect.Store || connect.session.Store; ^ TypeError:無法在module.exports(/Users/vinitkumar/projects/javascript/node-twitter/node_modules/connect-mongo/lib/connect-mongo.js:30:47)中讀取未定義的 屬性'Store' ' –

+0

@Vinit我得到了同樣的錯誤信息;看到答案的最後一行,它解決了這個問題。 – Venning

+0

@Vinit,聽起來像你正將'express'傳遞給'connect-mongo',而不是'express-session'? –