2016-01-16 83 views
5

這裏是使用快速會話存儲的簡單連接,即使書中的文本是正確的,它仍會使此錯誤不再出現。我很確定這與'新的MongoStore'對象初始化有關。錯誤:未找到連接策略MongoDB

var express = require('express'), 
    expressSession = require('express-session'); 

var MongoStore = require('connect-mongo/es5')(expressSession); 
var sessionStore = new MongoStore({ 
    host: '127.0.0.1', 
    port: '27017', 
    db: 'session' 
}); 

var app = express() 
    .use(expressSession({ 
     secret: 'my secret sign key', 
     store: sessionStore 
    })) 
    .use('/home', function (req, res) { 
     if (req.session.views) { 
     req.session.views++; 
     } 
     else { 
     req.session.views = 1; 
     } 
     res.end('Total views for you:' + req.session.views); 
    }) 
    .use('/reset', function(req, res) { 
     delete req.session.views; 
     res.end('Cleared all your views'); 
    }) 
    .listen(3000); 

回答

0

您需要定義一個數據庫連接,然後將它傳遞給新的MongoStore。你正在使用的'db:'參數需要一個MongoDB驅動程序連接,而不是URL到Mongo數據庫。對於這一點,你應該做這樣的事情:

var sessionStore = new MongoStore({ url:'mongodb://localhost:27017/test'); 

這是我知道的作品爲例,雖然它使用貓鼬,而不是MongoDB的驅動程序。

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost:27017/test'); 
var sessionStore = new MongoStore({mongooseConnection: mongoose.connection }); 
2

由於您使用一個會話集合所以它應該是這樣的

app.use(expressSession({ 
     store: new mongoStore({ 
      mongooseConnection: mongoose.connection, 
      collection: 'session', 
     }) 
    })); 
5

添加URL到新MongoStore()

var sessionStore = new MongoStore({ 
     host: '127.0.0.1', 
     port: '27017', 
     db: 'session', 
     url: 'mongodb://localhost:27017/demo' 
    }); 

在問題的代碼是從書由Basarat Ali Syed開始Node.js

+0

看起來像'db:'session''這樣的行沒有任何影響。我評論了這一行,並且剛剛添加了@alturium所說的「url」選項,它仍然工作。實際上它會在'demo'數據庫中創建一個名爲'sessions'的集合。 –

1

檢查部分使用其他連接兼容的會話存儲http://sailsjs.com/documentation/reference/configuration/sails-config-session

有版本限制都把連接 - 蒙戈模塊和示例顯示了一組不同的參數比文檔中的那些:

// Note: user, pass and port are optional 
    adapter: 'connect-mongo', 
    url: 'mongodb://user:[email protected]:port/database', 
    collection: 'sessions', 
    auto_reconnect: false, 
    ssl: false, 
    stringify: true 

我其實只需要使用:

// Note: user, pass and port are optional 
    adapter: 'connect-mongo', 
    url: 'mongodb://localhost:27017/sails', 
    collection: 'sessions' 

希望它有幫助!