pouchy v14.0.0
pouchy
"Pouchy is the sugar API for PouchDB that I've been hoping someone would write" @nolanlawson
simple, enhanced PouchDB. Pouchy wraps & extends PouchDB and provides various sorely needed sugar methods. further, it assists by standardizing the returned document format. most methods provided are very simple PouchDB-native method modifiers, but are targeted to save you frequent boilerplate re-typing! this library also proxies the PouchDB API directly, so you can use it like a PouchDB instance itself!
install
yarn add pouchy
if you need node support to flush databases to disk, versus using pouchy as an api client to remote couch/pouches, add your preferred adapters too. e.g.:
yarn add pouchy pouchdb-adapter-leveldb
usage
api docs and examples officially live here.
here are some basic examples:
// local, node database
import Pouchy from 'pouchy'
import level from 'pouchdb-adapter-leveldb'
Pouchy.plugin(level)
type Fruit = { type: string, tastes: string }
const fruit = new Pouchy<Fruit>({ name: 'fruit' })
const orange = await fruit.save({ type: 'orange', tastes: 'delicious' })
console.log(orange)
/**
{
type: 'orange',
tastes: 'delicious',
_id: 'EA1F2B55-2482-89C6-907E-6F938C59F734',
_rev: '1-f60b9b7d775a89d280e1f4c07122b863'
}
*/// local & remote replicated database!
import Pouchy from 'pouchy'
import memory from 'pouchdb-adapter-memory'
Pouchy.plugin(memory)
const customers = new Pouchy({
name: 'customers',
replicate: 'sync',
url: 'http://mydomain.org/db/customers'
})
customers.save({ firstName: 'bill', lastName: 'brasky' })
// wait for it... and couchdb/pouchdb-server @ http://mydomain.org/db/customers
// will receive bill brasky!why
why use pouchy over pouchdb?
- because managing
_idand_revcan be obnoxious with pouchdb (no hard feelings, of course).- pouchdb methods return document
_ids and_revs inconsistently. some methods return docs with anidattribute. some return docs with_id. the same happens forrev. - different methods return
_revnested under other attributes, vs. being at the top of the document. - pouchy lets you get your documents back in the same way they are represented in the store. if you are expecting an
_idand a_revin a return result, you'll get those attributes back on the top of your documents, every time.
- pouchdb methods return document
- because you need some frequently used sugar methods that aren't keys-included from pouchdb. there are many sugar methods available, make sure to check out the API docs!
- e.g.
.all(), to get all full documents in your store, in a simple array. - e.g.
.clear()/.deleteAll()to purge your store of its docs.
- e.g.
- because you want
.findto return simply an array of docs!- note: pouchy pre-loads the
pouchdb-findplugin, which is super handy and regularly recommended for use.
- note: pouchy pre-loads the
- because you want to pre-define *ouchdb synchronization behavior on construction! start syncing pronto, declaratively!
Thanks! cdaringe
changelog
- 12.3.+ - switched to semantic-release. please view the "Releases" GitHub tab
- 12.0.0
- refactor all of the things!
- better handle all
rev/id==>_rev/_idmapping - if
revoridexist on docs returned from pouch exist, but no_revor_idexist, that particular kv pair will be moved to the_-prefixed key and the non prefixed key will be removed.
- better handle all
- more tests!
- refactor all of the things!
- 11.0.2
- drop es6 content. es5 friendly-ify!
- 11.0.0
- pouchdb 6.0.5!
- 10.1.0
- expose replication options via
getReplicationOptions - on
destroy, actually destroy gracefully. that means, don't resolve the promise/callback untillivedbs have all http requests fully settled. see here for more info.
- expose replication options via
- 10.0.4 - be compatible with latest bluebird
.asCallback. - 10.0.0 - migrate to PouchDB 5.4.x. @NOTE, some APIs are not available by default anymore. See the custom build blog post on how to add features to your pouch
Pouchy.PouchDB.plugin(...). The following plugins are available by default:- pouchdb-adapter-http
- pouchdb-find
- pouchdb-replication
- 9.0.2 - fix
bulkGetwhen no docs are provided - 9.0.0-1
- fix
.all({ include_docs: false })to properly handle.rev/._rev - improve docs!
- fix
- 8.0.5 - fix issues w/ promise/cbs. sorry for 8.0.x-8.0.5 churn!
- 8.0.0 - support cb & promise interface. added bluebird to make this seamless and less verbose
- 7.1.0 - add
hasLikelySyncedevent - 7.0.0 - modify replicate API. dropped
'both'sync option, added{}option. droppedreplicateLive - 6.3.0 - add
destroy, which.cancels any replication from.syncEmitter(seereplicate). deprecate 6.2.0-1. changeEmitter => syncEmitter (rapid patch, so no major bump) - 6.2.1 - add
this.syncEmitterwhen using thereplicateAPI - 6.1.0 - add
bulkGet - 6.0.6 - fix issue where
_idwas stillidwhen doing.all({ include_docs: false }) - 6.0.4 - fix replication issue where db backend not honored
- 6.0.0 - db will store locally via leveldown as
nameif passed.urlwill still be used for replication if requested. prior versions preferredurlto the Pouch constructor over name - 5.2.1 - permit / in couchdb db name
- 5.2.0 - bump with couch
- 5.1.0 - deps bump & add cb interface
- 5.0.0 - deps bump only.
all future releases with track major version #s with PouchDB - 4.0.0 - major bump with PouchDB
- 3.0.0 - remove default
changes, and associatedon/off. didn't work out-of-the-box anyway. may return in 4.x - 2.0.1 - Don't modify constructor opts.name
- 2.0.0 - Fix synced db
fslocation. Previously was not honoringpathoption - 1.0.0 - 2.0.1 pouchdb-wrapper => pouchy
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
