Switch branches/tags
Find file
Fetching contributors…
Cannot retrieve contributors at this time
84 lines (56 sloc) 1.77 KB

Trapper Keeper

A super lightweight and storage agnostic data abstraction layer.

Build Status

When you don't want to use Resourceful throw it in Trapper Keeper. A lot of the underlying code and engine structure is based on Resouceful but all the hooks, events and relationships are stripped out.


var trapper_keeper = require('trapperkeeper');

// Create a connection to a data store
var db = trapper_keeper.connect('mongodb', 'mongodb://', 27017, { database: 'awesome' });

// Create a namespaced resource
// Namespace will correspond with data store key, collection, table, etc.
var resource = db.resource('namespace');

db.connection.on('ready', function() {
  resource.get(id, callback);
  resource.create(attrs, callback);


Trapper Keeper currently has engines for:

  • Memory
  • MongoDB
  • Redis
  • MySQL


Using the cache feature is optional, current engines that support this feature:

  • Memory
  • Redis

An example of a resource with caching:

// Define a resource with cache functionality
var resource = connection.resource('user').cache('memory');

Function Signatures

resource.get(id, callback);

resource.create(attrs, callback);, attrs, callback);

resource.destroy(id, callback);

resource.update(id, attrs, callback);

resouce.find(conditions, callback);



Installing trapper-keeper

  $ [sudo] npm install trapperkeeper


All tests are written with mocha and should be run with npm:

  $ npm test