2017-10-08 1 views
3

저는 NodeJs를 처음 사용하고 다음과 같은 라인을 추가하면 mongo db를 사용하여 세션을 저장하려고합니다. 오류가 발생합니다 :패스포트가있는 MongoDB에 세션을 저장할 수 없습니다.

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

})));

Error

여기 내 코드의 세션 부분 (내가 명시 4.16를 ​​사용하고 있습니다)입니다 : 당신은 MongoStore에 MonogDB의 인스턴스를 보내지 않은

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

. 문자열 'user'을 보냈으며 데이터베이스 인스턴스가 필요합니다. 따라서 MonogDB에 연결할 수 없습니다.

당신은 당신이 데이터베이스에 연결하여 사용할 필요가 몽구스를 사용하고 당신은 MongoStore에 대한 mongoose.connection를 사용할 수있는 경우 :

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

고마워요. 잘 했어. –

관련 문제