CleanCrispCode CleanCrispCode - 6 months ago 28
Node.js Question

How to configure connect-mongo

I am using "connect-mongo" node module to store session data in mongodb.

Below is my code related to configuring connect-mongo

const cookieParser = require('cookie-parser');
app.use(cookieParser());
const session = require('express-session');
const mongoStore = require('connect-mongo')(session);

app.use(session({
secret: "test",
store: new mongoStore({
url: mongodbURL,
collection : 'sessions',
autoRemove: 'interval',
autoRemoveInterval: 1 // In minutes. Default
}
}));


Once a user connects to root "/" url from browser, a record is getting inserted
in database

{
"_id": "EZ2sy6jHvnrlsyofqCrKVfPtp6hv5FX_",
"session": "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"name\":\"mongosession\"}",
"expires": ISODate("2016-06-14T15:19:15.548Z")
}


My questions are


  1. why is that originalMaxAge , expires keys of "session" are null and
    what needs to be modified so that these keys have a value.?

  2. Since I have set autoRemoveInterval to 1 min , I was assuming that session
    values from database will be removed in 1 min , but that was not the case
    What needs to be modified to achieve that ?


Answer
  1. Configure the cookie property of connect-session. By default, maxAge is null, making the cookie a (browser-)session cookie.
  2. Set the ttl property of connect-mongo, which defaults to 14 days (which looks about right, judging by the timestamp in the expires property). autoRemoveInterval only configures how often connect-mongo should check if there are any sessions that should expire.
Comments