cellar

Brainless short-term single-document storage for MongoDB

npm install cellar
7 downloads in the last week
14 downloads in the last month

Cellar

Brainless short-term single-document storage for MongoDB

Cellar is a small module built on top of Mongoose to allow easy short-term storage of simple schemas.

It's primary purpose is for storage of OAuth tokens and other data that you need cached for a short period.

Installation

Through NPM

$ npm install cellar

or using Git

$ git clone git://github.com/treygriffith/cellar.git node_modules/cellar/

API/How to Use

Instantiate Cellar with a collection name, mongoDB details or a Mongoose instance, and a schema

// with Mongoose and Mongoose Schema

var mongoose = require('mongoose');
var mongoUrl = 'mongodb://' + db.user + ':' + db.pass + '@' + db.host + ':' + db.port + '/' + db.name;
mongoose.connect(mongoUrl);

var myschema = mongoose.Schema({hello: String, stored_by: String});

var cellar = new Cellar('mystore', mongoose, myschema, {maxAge:3});


// with mongoDB details and object literal of Schema (maxAge of -1 stores docs forever)

var cellar = new Cellar('mystore', {user:db.user, pass:db.pass, host:db.host, port:db.port, name:db.name}, {hello: String, stored_by: String}, {maxAge:-1});

Cellar exposes 3 methods:

  1. store - Create and update documents in the collection

     // Create Doc/Insert
     cellar.store({hello: "world", stored_by: "cellar"}, function(err, doc) {
         if(err) {
             console.log(err);
         } else {
             console.log(doc,'sucessfully stored');
         }
     });
    
     // Update existing
     // As of 0.0.2, this syntax will upsert, resulting in a document of {hello: "planet", stored_by: "cellar"}
     cellar.store({stored_by: "cellar"}, {hello: "planet"}, function(err, doc) {
         if(err) {
             console.log(err);
         } else {
             console.log(doc,'sucessfully updated');
         }
     })
    
  2. retrieve - Find and return single documents in the collection

     // Find whole doc
     cellar.retrieve({stored_by: "cellar"}, function(err, doc) {
         if(err) {
             console.log(err);
         } else {
             console.log(doc,'found');
         }
     });
    
     // Find doc with only 1 field returned
     cellar.retrieve({stored_by: "cellar"}, ["hello"], function(err, doc) {
         if(err) {
             console.log(err);
         } else {
             console.log(doc,'found');
         }
     });
    
  3. retrieve_field - Find and return the contents of a single field on a single document in the collection

     // Find contents of one field
     cellar.retrieve_field({stored_by: "cellar"}, "hello", function(err, hello) {
         function(err, doc) {
         if(err) {
             console.log(err);
         } else {
             console.log('hello '+hello); // prints 'hello world'
         }
     })
    
npm loves you