Reputation: 2597
I use connect-mongo
module to store sessions from express
in mongodb
. Use it like this:
app.use(express.session({
'secret': config.APP_SECRET,
'store': new MongoStore({
'db': db
})
}));
Where:
var MongoStore = require(config.MODULES_DIR + 'connect-mongo')(express);
var db = mongoose.connection; // already connected as i use in in callback
But when session is used i get this error:
TypeError: Object #<Object> has no method 'open'
at MongoStore._open_database (/node_modules/connect-mongo/lib/connect-mongo.js:174:15)
at MongoStore._get_collection (/node_modules/connect-mongo/lib/connect-mongo.js:169:14)
at MongoStore.get (/node_modules/connect-mongo/lib/connect-mongo.js:211:10)
at Object.session [as handle] (/node_modules/express/node_modules/connect/lib/middleware/session.js:314:11)
at next (/node_modules/express/node_modules/connect/lib/proto.js:193:15)
at Object.cookieParser [as handle] (/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js:60:5)
at next (/node_modules/express/node_modules/connect/lib/proto.js:193:15)
at Object.urlencoded [as handle] (/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js:49:37)
at next (/node_modules/express/node_modules/connect/lib/proto.js:193:15)
at Object.json [as handle] (/node_modules/express/node_modules/connect/lib/middleware/json.js:51:37)
Upvotes: 2
Views: 1623
Reputation: 203554
If you want to use a Mongoose connection, you need the aptly named mongoose_connection
option:
new MongoStore({
mongoose_connection : db
})
Upvotes: 3
Reputation: 3679
I've always found it easier to connect using a MongoUri. Most DB services will provide one for you to use for your db. It should look something like this:
var mongoUri = 'mongodb://username:password@foo.mongohq.com/port/db'
app.use(express.session({
store : new MongoStore({
url : mongoUri
})
}))
Upvotes: 2