2017-10-08 46 views
3

我是新來的NodeJS和我試圖通過使用連接 - 蒙戈存儲在蒙戈DB會話,一旦我添加以下行 - 我得到一個錯誤:不能在MongoDB的會話存儲與護照

app.use(session({ 
    saveUninitialized: true, 
    resave: true, 
    store : new MongoStore({ // adding this will cause an error 
    db: 'users' 
}) 

}));

Error

這裏是我的代碼的會話部分(我用快遞4.16):

var express = require('express'); 
    var path = require('path'); 
    var favicon = require('serve-favicon'); 
    var logger = require('morgan'); 
    var cookieParser = require('cookie-parser'); 
    var bodyParser = require('body-parser'); 
    var session = require('express-session'); 
    var passport = require('passport'); 
    var LocalStrategy = require('passport-local').Strategy; 
    var expressValidator = require('express-validator'); 
    var multer = require('multer'); 
    var upload = multer({dest: './uploads'}); 
    var flash = require('connect-flash'); 
    var bcrypt = require('bcryptjs'); 
    var mongo = require('mongodb'); 
    var mongoose = require('mongoose'); 
    var MongoStore = require('connect-mongo')(session); 
    var db = mongoose.connection; 
    session(app, mongo.initSessionStore); 

    app.use(session({ 
     saveUninitialized: true, 
     resave: true, 
     store : new MongoStore({ 
     db: 'users' 
     }) 
    })); 

    // Passport 
    app.use(passport.initialize()); 
    app.use(passport.session()); 

回答

3

您還沒有發送MonogDB的實例MongoStore。你發送字符串'user',它期望數據庫實例。所以它不能連接到MonogDB。

如果你正在使用你首先需要連接到數據庫,貓鼬,然後你可以使用mongoose.connection爲MongoStore:

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost/test'); 
var db = mongoose.connection; 

app.use(session({ 
     saveUninitialized: true, 
     resave: true, 
     store : new MongoStore({ 
     mongooseConnection: db 
     }) 
})); 
+1

謝謝!它的工作 – RoyBarOn

+1

謝謝。好工作。 –