0.1.0 • Published 10 years ago

mongo-sess v0.1.0

Weekly downloads
-
License
-
Repository
-
Last release
10 years ago

MongoSess

MongoSess is a node.js module for handling session data, utilizing MongoDB for storage. It's only really interesting because it can be used without frameworks. If you're looking for something to use with Express/Connect, there are better alternatives.

Installation

$ npm install mongosess

API

Note: All callbacks are the standard callback(err, result) style.

MongoSess.connect( connection URI )

Connect to MongoDb using the provided Connection URI. This assumes you'd like to accept the default collection name 'sessions', no auto-reconnects, and data persisting for two weeks. If you'd like to change this behaviour, pass in an object with the following:

{
  url: connection URI,
  collectionName: String,
  auto_reconnect: Boolean,
  expires: Time in ms
}

Note: MongoSess currently supports neither replica sets nor Connection URI options, so keep Connection URIs simple.

MongoSess.close()

Closes the previously opened database connection.

session = new MongoSess( request, response , options )

Create a new session store for the current request and response. The 'new' constructor is optional. You may pass in options relating to cookies; specifically, cookie name and keys for signing using Keygrip. See the example for more detail.

session.set( { key1: val1, key2: val2, ..., keyN, valN }, callback )

This sets the key(s) equal to value(s) for the session.

Note: do not overwrite the '_id' or 'createdAt' fields. Bad things will happen.

session.get( key, callback )

Retrieves the value associated with the given key from the session data. If not key is given, gets all session data as an object.

###session.del( key1, key2, ..., keyN, callback )

Deletes the provided keys and their values from the session data.

As with set(), do not delete the '_id' or 'createdAt' fields.

session.end()

Deletes the session from the database and deletes the user's cookies.

Example

var MongoSess = require('mongosess'),
    KeyGrip = require('keygrip'),
    http = require('http');

// Connect to MongoDb on port 12345 of localhost, using the 'example' database.
MongoSess.connect({
  url: 'mongodb://localhost:12345/example',
  collectionName: 'seshes' // Sessions will be stored in a collection called 'seshes'.
  expires: 1000 * 60 * 60 * 24 * 7, // Two week sessions.
});

// Create an http server listening on port 3000.
var server = http.createServer(function (req, res) {

  // You can decorate like so:
  req.session = res.session = MongoSess(req, res, {
    cookieName: 'sessionCookie', // Cookie name will be 'sessionCookie'
    keys: ['secret1', 'secret2'] // Keys to sign cookie with.
  });

  // Set some data.
  res.session.set({ name: 'john doe'}, function (err, result) {
    res.writeHead(200);
    res.end('Your name is John Doe.');
  });

  /*
   * Some time later...
   */

  // Get some data.
  req.session.get('name', function (err, name) {
    res.writeHead(200);
    res.end('Hello, ' + name + '.');
  });

  /*
   * Even later...
   */

  // Delete data.
  res.session.del('name', function (err, deleted) {
    res.writeHead(200);
    res.end('You no longer have a name.');
  }); 

  /*
   * And eventually...
   */

  // End the session.
  res.session.end(function (err, ended) {
    res.writeHead(200);
    res.end('Goodbye!');
  });
});

server.listen(3000);

// Once done, close connection.
MongoSess.close();
// Alternative: MongoSess.disconnect();

Thanks

Inspired by isaacs/redsess and diversario/connect-mongostore

License

See LICENSE