node-connect-pg-simple

A simple, minimal PostgreSQL session store for Connect/Express

Github星跟蹤圖

Connect PG Simple

A simple, minimal PostgreSQL session store for Express/Connect

js-semistandard-style
Build Status
Coverage Status
dependencies Status
Known Vulnerabilities
FOSSA Status
Average time to resolve an issue
Percentage of issues still open
Language grade: JavaScript
Gitter

Installation

npm install connect-pg-simple

Once npm installed the module, you need to create the session table in your database. For that you can use the table.sql file provided with the module:

psql mydatabase < node_modules/connect-pg-simple/table.sql

Or simply play the file via a GUI, like the pgAdminIII queries tool.

Note that connect-pg-simple requires PostgreSQL version 9.5 or above.

Usage

Examples are based on Express 4.

Simple example:

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
}));

Advanced example showing some custom options:

var pg = require('pg')
  , session = require('express-session')
  , pgSession = require('connect-pg-simple')(session);

var pgPool = new pg.Pool({
    // Insert pool options here
});

app.use(session({
  store: new pgSession({
    pool : pgPool,                // Connection pool
    tableName : 'user_sessions'   // Use another table-name than the default "session" one
  }),
  secret: process.env.FOO_COOKIE_SECRET,
  resave: false,
  cookie: { maxAge: 30 * 24 * 60 * 60 * 1000 } // 30 days
}));

Express 3 (and similar for Connect):

var express = require('express');

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

Advanced options

  • pool - Recommended. Connection pool object (compatible with pg.Pool) for the underlying database module. The conString option is ignored if this option is specified.
  • pgPromise - Existing instance of pg-promise to be used for DB communications. The conString option is ignored if this option is specified.
  • conString - If you don't specify a pool object, use this option or conObject to specify a PostgreSQL connection string and this module will create a new pool for you. If the connection string is in the DATABASE_URL environment variable (as you do by default on eg. Heroku) – then this module fallback to that if this option is not specified.
  • conObject - If you don't specify a pool object, use this option or conString to specify a PostgreSQL Pool connection object and this module will create a new pool for you.
  • ttl - the time to live for the session in the database – specified in seconds. Defaults to the cookie maxAge if the cookie has a maxAge defined and otherwise defaults to one day.
  • schemaName - if your session table is in another Postgres schema than the default (it normally isn't), then you can specify that here.
  • tableName - if your session table is named something else than session, then you can specify that here.
  • pruneSessionInterval - sets the delay in seconds at which expired sessions are pruned from the database. Default is 60 seconds. If set to false no automatic pruning will happen. By default every delay is randomized between 50% and 150% of set value, resulting in an average delay equal to the set value, but spread out to even the load on the database. Automatic pruning will happen pruneSessionInterval seconds after the last pruning (includes manual prunes).
  • pruneSessionRandomizedInterval – if set to false, then the exact value of pruneSessionInterval will be used in all delays. No randomization will happen. If multiple instances all start at once, disabling randomization can mean that multiple instances are all triggering pruning at once, causing unnecessary load on the database. Can also be set to a method, taking a numeric delay parameter and returning a modified one, thus allowing a custom delay algorithm if wanted.
  • errorLog – the method used to log errors in those cases where an error can't be returned to a callback. Defaults to console.error(), but can be useful to override if one eg. uses Bunyan for logging.

Useful methods

  • close() – if this module used its own database module to connect to Postgres, then this will shut that connection down to allow a graceful shutdown.
  • pruneSessions([callback(err)]) – will prune old sessions. Only really needed to be called if pruneSessionInterval has been set to false – which can be useful if one wants improved control of the pruning.

License

FOSSA Status

主要指標

概覽
名稱與所有者voxpelli/node-connect-pg-simple
主編程語言JavaScript
編程語言JavaScript (語言數: 2)
平台
許可證MIT License
所有者活动
創建於2014-03-05 09:06:10
推送於2025-06-01 03:13:24
最后一次提交
發布數31
最新版本名稱v10.0.0 (發布於 )
第一版名稱v1.0.0 (發布於 2014-03-05 10:05:05)
用户参与
星數241
關注者數5
派生數73
提交數395
已啟用問題?
問題數79
打開的問題數3
拉請求數127
打開的拉請求數15
關閉的拉請求數106
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?