2013-04-24 58 views
0

我正在使用Express和Connect-Mongo來管理Node.js/Socket.io應用程序的會話。
我看着connect-mongo文檔,我試圖初始化數據庫連接,但每當我嘗試存儲任何內容時,存儲對象始終爲空並崩潰。
下面是我使用的代碼片段:所有其它變量(快遞,服務器等)都正確initalized連接mongo和快速空對象存儲空間

var mongoserver = new mongodb.Server('localhost', mongodb.Connection.DEFAULT_PORT, {safe:true}) ; 
var store ; 
app.use(express.session({ 
secret: 'secret', 
store: new MongoStore({ db: 'test'}, function(){ 
    db = new mongodb.Db('test', mongoserver, { w: 1 }) ; 
    db.open(function(err, db){ 
     if(err){console.log('DB error', err) ;} 

     db.collection('test', function(err, collection) { 
      console.log('Collection...') ; 
     }); 

     db.on("close", function(error){ 
      console.log("Connection to the database was closed!"); 
     }); 
    }); 
}) 
})); 
io.sockets.on('connection', function (socket) { 
store.set('test-sid', {foo:'bar'}, function(err, session) {}) ; 
)}; 

,應用程序出現,我看到在連接到蒙戈接受控制檯。有任何想法嗎 ??

回答

2

您並未將商店存儲在變量「商店」中。它被傳遞到會話配置並設置爲明確的應用程序設置。

爲了解決這個問題,你可以創建存儲,並把它加爲設定之前分配給變量,然後把它傳遞到會話配置:

// Create the store 
var store = new MongoStore(...); 

// Pass into session creation 
app.set(expression.session({ 
    store: store 
}); 

// You can now access the store from the variable as you expected 
store.set('test-sid', {foo: 'bar'}, function(err, session) {}); 
+0

我知道這是愚蠢的東西,謝謝! – blackbird 2013-04-24 17:04:27