Minimalist localStorage database API. Works well as a cache for CouchDB documents.
JavaScript
Switch branches/tags
Nothing to show
Pull request Compare This branch is 47 commits behind mikeal:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
test
README.mkd
couchie.js

README.mkd

couchie

Minimalist localStorage database API. Works well as a cache for CouchDB documents.

<script type="text/javascript" src="couchie.js"></script>
<script type="text/javascript">
  
  // get a database by name
  var db = couchie('name')
  
  // write a document, MUST include _id and _rev
  db.post({_id:'550e8400-e29b-41d4-a716-446655440000', _rev:'1-550e8400', data:'test'}, function (e) {
    if (e) throw e
    
    // get a document by id
    db.get('550e8400-e29b-41d4-a716-446655440000', function (e, doc) {
      if (e) throw e
      doc // {_id:'550e8400-e29b-41d4-a716-446655440000', _rev:'1-550e8400', data:'test'}
      db.revs() // {'550e8400-e29b-41d4-a716-446655440000': '1-550e8400'}
      
      // write documents in bulk, much more efficient
      db.bulk([ /* array of docs */ ], function (e) {
        if (e) throw e
        
        // get array of all documents
        db.all(function (e, docs) {
          if (e) throw e
          docs // array of all documents
        })
      })
    })
  })
</script>

FAQ

If localStorage is blocking why is this a callback API?

In the future couchie may implement a few features that require a non-blocking API. The first is lock() which would queue any changes coming in to the database until the lock is removed. The second is pagination across documents for large operations, basically wrapping all the synchronous file access in setTimeout calls so that we don't block the main event loop on large db operations.