GithubHelp home page GithubHelp logo

g3z / node-connect-pg-simple Goto Github PK

View Code? Open in Web Editor NEW

This project forked from voxpelli/node-connect-pg-simple

0.0 2.0 0.0 53 KB

A simple, minimal PostgreSQL session store for Connect/Express

Home Page: https://www.npmjs.com/package/connect-pg-simple

License: MIT License

JavaScript 100.00%

node-connect-pg-simple's Introduction

Connect PG Simple

A simple, minimal PostgreSQL session store for Express/Connect

Build Status Coverage Status Dependency Status js-semistandard-style

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] (https://github.com/voxpelli/node-connect-pg-simple/blob/master/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.

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

app.use(session({
  store: new pgSession({
    pg : pg,                                  // Use global pg-module
    conString : process.env.FOO_DATABASE_URL, // Connect using something else than default DATABASE_URL env variable
    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

  • pg - Recommended. If you want the session store to use the same database module (compatible with pg / pg.js) as the rest of your app, then send it in here. Useful as eg. the connection pool then can be shared between the module and the rest of the application. Also useful if you want this module to use the native bindings of pg as this module itself only comes with pg.js.
  • 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.
  • conString - if you don't have your PostgreSQL connection string in the DATABASE_URL environment variable (as you do by default on eg. Heroku) – then you need to specify the connection string or object here so that this module that create new connections. Needen even if you supply your own database module.
  • 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. Automatic pruning weill happen pruneSessionInterval seconds after the last pruning – manual or automatic.
  • 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 automatic interval pruning is on, which it is by default as of 3.0.0, then the timers will block any graceful shutdown unless you tell the automatic pruning to stop by closing the session handler using this method.
  • 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.

node-connect-pg-simple's People

Contributors

focusaurus avatar japherwocky avatar nalexandrov avatar rauno56 avatar sebcagnon avatar toddpi314 avatar voxpelli avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.