couchbase-odm
v0.9.5
Published
A simple Object Data Mapper for Couchbase
Downloads
25
Readme
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