Nanoid makes it easier to build applications with Couchdb. It removes the repeatable cruft and makes working with Couchdb as fun as it should be.
-
Download
npm install nanoid
-
Connect to database
var Model = require('nanoid') Model.create_connection("my_database");
-
Define a model
Model.define('User', { name: String surname: {type: String, default: "Rambo"} })
var Model = require('nanoid');
Model.define('User', {
name: String
surname: {type: String, default: "Rambo"}
})
var user = Model.create('User', {name: "John", surname: "Rambo"});
user.save(function (err, saved_user) {
// .. do some other stuff here
})
var user_id = "123456";
var User = Model('User');
User.find(user_id, function (err, user) {
// .. do something with the user
})
var User = Model('User');
User.all(function (err, users) {
// .. do something with the user
})
var User = Model('User');
User.where("name","Ben", function (err, users) {
// .. do something with the users
})
var User = Model('User');
User.findFirst('name', 'Ben', function (err, user){
// .. do something with the user
})
var Band = Model.define("Band",{rank: Number, name: String});
Band.addView('ByRankAndName',{
map: function (doc) {
if (doc.model_type === 'Band') {
emit([doc.rank, doc.name],1);
}
}
});
Band.view('ByRankAndName')
.startkey([2, "Incubus"])
.endkey([3, {}])
.limit(10)
.skip(3, function (err, bands) {
// will only execute the chain when a function has a callback passed to it
});
Logging has been disabled for now.
#What needs doing?
- Define model_type field stored in db
- Multiple db support
- Improved logging
#Changelog
- 25 Aug 2013 - Add First Implementation based on LazyBoy created by Garren Smith
#Contributors Tcha-Tcho
Bruno Agutoli