couchbase-odm

0.9.5 • Public • Published

couchbase-odm

A simple Object Data Mapper for Couchbase.

Installation

Simply pull this repository or install with npm install couchbase-odm.

Usage

Creating a model

var User = odm.createModel('User', { name: 'String',
                          username: { type: 'String', index: true } }, couchbase_connection);

Chain .setupViews() onto the end of createModel(...) to automatically set up views based on indexes and import existing views from Couchbase.

Adding static functions

User.sayHello = function() { console.log('My name is '+ this.name); };

Adding an object

var u = new User({ name: 'Jesse' });
u.username = 'jessevandersar';
 
console.log(u._id); /* --> automatically generated UUIDv4-id */
console.log(u._type); /* --> 'User' */
 
u.sayHello(); /* --> 'My name is Jesse' */
 
u.save(function(result) {
  console.log(result); /* { object: <saved object>, result: <CAS> } */
});

Retrieving and updating an object

User.getById(id, function(u) {
  u.username = 'new_username';
    
  u.save();
});

Deleting an object

User.getById(id, function(u) {
  u.remove();
});

Indexes/Views

Adding the 'index'-option to a field, as with the 'username'-field in the example, automatically creates a very basic view for querying this object-type with the field as a key. Note that calling .setupViews() on the model is a prerequisite.

Querying an object type (view)

User.getByUsername('jessevandersar', function(results) {
  console.log(results);
});

Secondary view options (like limit, descending and stale) can be added as an object in the second parameter.

An 'all'-view will be added by default, usable with User.getAll(...). Also, views that already exist in the design document will be automatically imported from Couchbase.

Note: imported views with names containing underscores will be usable in camelcase with User.specificView(key, callback).

Notes

This module is in a very early state. It hasn't been tested in production yet, but has worked for me during development, and has served as a nice excercise in working with Couchbase and creating Node modules. Please let me know about your thoughts and/or bugs that you've encountered!

Github repo: https://github.com/jessevandersar/couchbase-odm

Package Sidebar

Install

npm i couchbase-odm

Weekly Downloads

8

Version

0.9.5

License

BSD

Last publish

Collaborators

  • jessesar