mongo-sess
v0.1.0
Published
Session storage, utilizing MongoDB.
Readme
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