Home

Awesome

koa-generic-session-sequelize npm dependencies license

Store Koa sessions in a database using Sequelize.

Compatibility

Sequelize 4.12.0 or higher is supported.

Usage

Notice: This is an older module that works best with koa-generic-session. However, most Koa apps today use the more modern koa-session library. Unfortunately, this module is not designed to work with that.

This session storage provider works with koa-generic-session (session middleware for Koa). It also works with koa-session-minimal, but koa-generic-session is recommended.

It stores session data in a database defined by you, using the Sequelize ORM.

It has been tested with SQLite, MySQL, PostgreSQL, and Microsoft SQL Server.

Installation

npm install --save koa-generic-session-sequelize

Example

Full example in examples/basic_sqlite.js.

const SequelizeStore = require('koa-generic-session-sequelize');

// set up Sequelize in the usual manner
// for a quick example using the sqlite3 module:
const sequelize = new Sequelize({
  logging: false,
  dialect: 'sqlite',
  storage: __dirname + '/example.db'
});

app.use(session({
  store: new SequelizeStore(
    sequelize,            // pass your sequelize object as the first arg
    {}                    // pass any config options for sequelizeStore as the second arg (see below)
  )
}));

Options

Replication

Sequelize supports replication (configured as options.replication). This lets you use one server for writes and another server, or a group of servers, for reads.

However, if there is any lag between the time a write is committed and when it becomes visible on your read servers, you should not use that configuration for session data. Create a separate Sequelize instance for the session data that does not use replication.

Unit tests

To run the test suite, clone this repository and run npm install in the checkout directory. Then run npm test. This will exercise the library against SQLite.

To test against MySQL, PostgreSQL, or SQL Server, edit test/config.js. Uncomment sections referencing those servers and enter your credentials. The table _sess_test will be created during testing.