Rich document ids for CouchDB
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
Go to file
Johannes Jörg Schmidt cdeea1fb4d README <3 11 years ago
test configurable parts 11 years ago
.gitignore first commit 11 years ago
.travis.yml test on current versions 11 years ago
README.md README <3 11 years ago
index.js configurable parts 11 years ago
package.json configurable parts 11 years ago

README.md

docuri Build Status

Rich document ids for CouchDB:

type/id/subtype/index/version

For example: movie/blade-runner/gallery-image/12/medium

Docuris have many advantages:

  • You can access the doc type (eg. in changes feed)
  • They sort well in Futon
  • They tell a lot about the document
  • You can rely on a schema and construct ids of dependend documents (eg. a specific version of an image)
  • You can easily delete related documents (eg. by requesting a range from _all_docs)

...and I'm sure I forgot to mention the best.

Give Docuris a try!

Usage

Parse id string:

var docuri = require('docuri');
docuri.parse('mytype/myid/mysubtype/myindex/myversion');
// {
//   type: 'mytype',
//   id: 'myid',
//   subtype: 'mysubtype',
//   index: 'myindex',
//   version: 'myversion'
// }

Build id string from object:

docuri.stringify({
  type: 'mytype',
  id: 'myid',
  subtype: 'mysubtype',
  index: 'myindex',
  version: 'myversion'
});
// 'mytype/myid/mysubtype/myindex/myversion'

Change id string components:

docuri.merge('mytype/myid/mysubtype/myindex/myversion', {
  type: 'my_new_type',
});
// 'my_new_type/myid/mysubtype/myindex/myversion'

Use custom definition:

docuri();
// ['type', 'id', 'subtype', 'index', 'version']
docuri(['id', 'meta']);
docuri();
// ['id', 'meta']
docuri.parse('42/answer');
// {
//   id: '42',
//   meta: 'answer'
// }

Browser support

To use docid in your client-side application, browserify it like this:

browserify -s DocURI path/to/docuri/index.js > path/to/your/assets

Once added to your DOM, this will leave you with a global DocURI object for use in your e.g. Backbone Models/Collections.

Development

To run the unit tests:

npm test

License

Copyright (c) 2014 Johannes J. Schmidt, null2 GmbH
Licensed under the MIT license.