npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

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