Search code examples
node.jsexpressexpress-session

How to specify the connection string in connect-pg-simple?


The simple example on https://github.com/voxpelli/node-connect-pg-simple shows:

var session = require('express-session');

app.use(session({
  store: new (require('connect-pg-simple')(session))(),
  secret: process.env.FOO_COOKIE_SECRET,
  resave: false,
  cookie: { maxAge: 30 * 24 * 60 * 60 * 1000 } // 30 days
}));

But when I try it, node complains:

throw new Error('No database connecting details provided to connect-pg-simple');

How do I specify the connection string?


Solution

  •     // I was stuck with the same proble and solved it
    
        // 1-) Connection details
        const conObject = {
          user: 'mehmood',
          password: 'mehmood',
          host: 'localhost',// or whatever it may be
          port: 5432,
          database: 'test_db'
        };
    
        // 2-) Create an instance of connect-pg-simple and pass it session
        const pgSession = require('connect-pg-simple')(session);
    
        // 3-) Create a config option for store
        const pgStoreConfig = {
          pgPromise: require('pg-promise')({ promiseLib: require('bluebird') })({ 
                             conObject }), // user either this
          //conString: 'postgres://mehmood:mehmood@localhost:5432/test_db', // or this
          // conObject: conObject,// or this,
          // pool: new (require('pg').Pool({ /* pool options here*/}))// or this
    
        }
       // 4-) use the store configuration to pgSession instance
        app.use(session({
          store: new pgSession(pgStoreConfig),
          secret: 'jW8aor76jpPX', // session secret
          resave: true,
          saveUninitialized: true,
          cookie: { maxAge: 30 * 24 * 60 * 60 * 1000 } // 30 days 
        }));
    
    
      // Share improve this answer