node package manager
Stop writing boring code. Discover, share, and reuse within your team. Create a free org »



In-memory object store for JavaScript, with some MongoDB operators


Via npm on Node:

npm install ostore

In your browser: TBD


Reference in your program

var ostore = require('ostore');

Create an store

var store = ostore.createStore();

Put an item with a key

var item = { name: 'Adam', age: 800 };
store.put(1, item);

The key is NOT added to the item.

Add an item

var item = { name: 'Adam', age: 800 };
var id = store.add(item);

The key is NOT added to the original item, but the saved item (a clone) has a new field id.

Retrieve item by key

var item = store.get(id);

Remove item by key


Retrieve items

var items = store.find(id);

Retrieve items with criteria

var items = store.find({ name: 'Adam' });

Retrieve items with criteria and fields

var items = store.find({ name: 'Adam' }, { age: true });

In this example, only the age is retrieved.

Retrieve all items using empty criteria and fields

var items = store.find({ }, { age: true });

You can also null criteria

var items = store.find(null, { age: true });

Update fields in an item

store.update(1, { age: 700 });




  • 0.0.1 Published
  • 0.0.2 Published, fixing package.json
  • 0.0.3 Published, remove added
  • 0.0.4 Published, store.clear
  • 0.0.5 Published, new query and aggregation operators, not documented yet (see test folder)
  • 0.0.6 Published, update with criteria and multi, remove with criteria

To Do

  • Remove item (done)
  • Browser support
  • Dog fooding in a project (Done)


It was born after reading an email at Node.js list: Tests for a REST store generator

There are some recorded videos showing my TDD workflow (before switching to use simpleunit framework):

TDD Rocks! (7) OStore With JavaScript/Node.Js TDD Rocks! (2) OStore With JavaScript/Node.Js

And one video about JavaScript and TDD:

TDD Rocks! (9) JavaScript And Node.Js


Feel free to file issues and submit pull requests � contributions are welcome.

If you submit a pull request, please be sure to add or update corresponding test cases, and ensure that npm test continues to pass.