user1692333
user1692333

Reputation: 2597

How to store sessions in MongoDB from NodeJS?

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

Answers (2)

robertklep
robertklep

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

Ari
Ari

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

Related Questions