@hoodie/store-client v8.3.0
hoodie-store-client
Hoodie Client for data persistence & offline sync
Example
var Store = require('@hoodie/store-client')
var store = new Store('mydbname', {
PouchDB: require('pouchdb'),
remote: 'http://localhost:5984/mydbname'
})
// or
var PresetStore = Store.defaults({
PouchDB: require('pouchdb'),
remoteBaseUrl: 'http://localhost:5984'
})
var store = new PresetStore('mydb')API
- Store.defaults
- Constructor
- store.add(properties)
- store.add(arrayOfProperties)
- store.find(id)
- store.find(doc)
- store.find(idsOrDocs)
- store.findOrAdd(id, doc)
- store.findOrAdd(doc)
- store.findOrAdd(idsOrDocs)
- store.findAll()
- store.update(id, changedProperties)
- store.update(id, updateFunction)
- store.update(doc)
- store.update(arrayOfDocs)
- store.updateOrAdd(id, doc)
- store.updateOrAdd(doc)
- store.updateOrAdd(arrayOfDocs)
- store.updateAll(changedProperties)
- store.updateAll(updateFunction)
- store.remove(id)
- store.remove(doc)
- store.remove(idsOrDocs)
- store.removeAll()
- store.pull()
- store.push()
- store.sync()
- store.connect()
- store.disconnect()
- store.isConnected()
- store.on()
- store.one()
- store.off()
- store.withIdPrefix
- Events
Store.defaults
Store.defaults(options)| Argument | Type | Description | Required |
|---|---|---|---|
options.remoteBaseUrl | String | Base url to CouchDB. Will be used as remote prefix for store instances | No |
options.PouchDB | Constructor | PouchDB custom builds | Yes |
Returns a custom Store Constructor with passed default options.
Example
var PresetStore = Store.defaults({
remoteBaseUrl: 'http://localhost:5984'
})
var store = new PresetStore('mydb')
store.sync() // will sync with http://localhost:5984/mydbConstructor
new Store(dbName, options)| Argument | Type | Description | Required |
|---|---|---|---|
dbName | String | name of the database | Yes |
options.remote | String | name or URL of remote database | Yes (unless remoteBaseUrl is preset, see Store.defaults) |
options.remote | Object | PouchDB instance | Yes (ignores remoteBaseUrl from Store.defaults) |
options.remote | Promise | Resolves to either string or PouchDB instance | see above |
options.PouchDB | Constructor | PouchDB custom builds | Yes (unless preset using Store.defaults)) |
options.validate | Function(doc) | Validation function to execute before DB operations (Can return promise for async validation) | No |
Returns store API.
Example
var store = new Store('mydb', {
PouchDB: PouchDB,
remote: 'http://localhost:5984/mydb'
})
store.sync() // will sync with http://localhost:5984/mydbExample with dynamic remote URL and ajax headers
var loadAccount = require('./load-account')
var store = new Store('mydb', {
PouchDB: PouchDB,
get remote () {
return loadAccount.then(function (account) {
return new PouchDB('http://localhost:5984/' + encodeURIComponent('user/' + account.id), {
ajax: {
headers: {
authorization: 'session ' + account.session.id
}
}
})
})
}
})
store.sync() // will sync with http://localhost:5984/mydbstore.add(properties)
store.add(properties)| Argument | Type | Description | Required |
|---|---|---|---|
properties | Object | properties of document | Yes |
properties.id | String | If set, the document will be stored at given id | No |
Resolves with properties and adds id (unless provided), createdAt and
updatedAt properties.
{
"id": "12345678-1234-1234-1234-123456789ABC",
"foo": "bar",
"createdAt": "2016-05-09T12:00:00.000Z",
"updatedAt": "2016-05-09T12:00:00.000Z"
}Rejects with:
š Add expected Errors: #102
| Name | Description |
|---|---|
| Error | ... |
Example
store.add({foo: 'bar'}).then(function (doc) {
alert(doc.foo) // bar
}).catch(function (error) {
alert(error)
})store.add(arrayOfProperties)
| Argument | Type | Description | Required |
|---|---|---|---|
arrayOfProperties | Array | Array of properties, see store.add(properties) | Yes |
Resolves with properties and adds id (unless provided), createdAt and
updatedAt properties. Resolves with array of properties items if called
with propertiesArray.
{
"id": "12345678-1234-1234-1234-123456789ABC",
"foo": "bar",
"createdAt": "2016-05-09T12:00:00.000Z",
"updatedAt": "2016-05-09T12:00:00.000Z"
}Rejects with:
š Add expected Errors: #102
| Name | Description |
|---|---|
| Error | ... |
Example: add single document
store.add({foo: 'bar'}).then(function (doc) {
alert(doc.foo) // bar
}).catch(function (error) {
alert(error)
})Example: add multiple documents
store.add([{foo: 'bar'}, {bar: 'baz'}]).then(function (docs) {
alert(docs.length) // 2
}).catch(function (error) {
alert(error)
})store.find(id)
| Argument | Type | Description | Required |
|---|---|---|---|
id | String | Unique id of document | Yes |
Resolves with properties
{
"id": "12345678-1234-1234-1234-123456789ABC",
"foo": "bar",
"createdAt": "2016-05-09T12:00:00.000Z",
"updatedAt": "2016-05-09T12:00:00.000Z"
}Rejects with:
š Add expected Errors: #102
| Name | Description |
|---|---|
| Error | ... |
Example
store.find('12345678-1234-1234-1234-123456789ABC').then(function (doc) {
alert(doc.id)
}).catch(function (error) {
alert(error)
})store.find(doc)
| Argument | Type | Description | Required |
|---|---|---|---|
doc | Object | document with id property | Yes |
Resolves with properties
{
"id": "12345678-1234-1234-1234-123456789ABC",
"foo": "bar",
"createdAt": "2016-05-09T12:00:00.000Z",
"updatedAt": "2016-05-09T12:00:00.000Z"
}Rejects with:
š Add expected Errors: #102
| Name | Description |
|---|---|
| Error | ... |
Example
store.find(doc).then(function (doc) {
alert(doc.id)
}).catch(function (error) {
alert(error)
})store.find(idsOrDocs)
| Argument | Type | Description | Required |
|---|---|---|---|
idsOrDocs | Array | Array of id (String) or doc (Object) items | Yes |
Resolves with array of properties
[{
"id": "12345678-1234-1234-1234-123456789ABC",
"foo": "bar",
"createdAt": "2016-05-09T12:00:00.000Z",
"updatedAt": "2016-05-09T12:00:00.000Z"
}]Rejects with:
š Add expected Errors: #102
| Name | Description |
|---|---|
| Error | ... |
Example
store.find(doc).then(function (doc) {
alert(doc.id)
}).catch(function (error) {
alert(error)
})store.findOrAdd(id, doc)
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Resolves with :
{
}Rejects with:
| Name | Description |
|---|---|
| Error | ... |
Example
store.findOrAdd(doc)
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Resolves with :
{
}Rejects with:
| Name | Description |
|---|---|
| Error | ... |
Example
store.findOrAdd(idsOrDocs)
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Resolves with :
{
}Rejects with:
| Name | Description |
|---|---|
| Error | ... |
Example
store.findAll()
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Resolves with :
{
}Rejects with:
| Name | Description |
|---|---|
| Error | ... |
Example
store.update(id, changedProperties)
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Resolves with :
{
}Rejects with:
| Name | Description |
|---|---|
| Error | ... |
Example
store.update(id, updateFunction)
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Resolves with :
{
}Rejects with:
| Name | Description |
|---|---|
| Error | ... |
Example
store.update(doc)
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Resolves with :
{
}Rejects with:
| Name | Description |
|---|---|
| Error | ... |
Example
store.update(arrayOfDocs)
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Resolves with :
{
}Rejects with:
| Name | Description |
|---|---|
| Error | ... |
Example
store.updateOrAdd(id, doc)
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Resolves with :
{
}Rejects with:
| Name | Description |
|---|---|
| Error | ... |
Example
store.updateOrAdd(doc)
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Resolves with :
{
}Rejects with:
| Name | Description |
|---|---|
| Error | ... |
Example
store.updateOrAdd(arrayOfDocs)
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Resolves with :
{
}Rejects with:
| Name | Description |
|---|---|
| Error | ... |
Example
store.updateAll(changedProperties)
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Resolves with :
{
}Rejects with:
| Name | Description |
|---|---|
| Error | ... |
Example
store.updateAll(updateFunction)
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Resolves with :
{
}Rejects with:
| Name | Description |
|---|---|
| Error | ... |
Example
store.remove(id)
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Resolves with :
{
}Rejects with:
| Name | Description |
|---|---|
| Error | ... |
Example
store.remove(doc)
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Resolves with :
{
}Rejects with:
| Name | Description |
|---|---|
| Error | ... |
Example
store.remove(idsOrDocs)
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Resolves with :
{
}Rejects with:
| Name | Description |
|---|---|
| Error | ... |
Example
store.removeAll()
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Resolves with :
{
}Rejects with:
| Name | Description |
|---|---|
| Error | ... |
Example
store.pull()
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Resolves with :
{
}Rejects with:
| Name | Description |
|---|---|
| Error | ... |
Example
store.push()
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Resolves with :
{
}Rejects with:
| Name | Description |
|---|---|
| Error | ... |
Example
store.sync()
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Resolves with :
{
}Rejects with:
| Name | Description |
|---|---|
| Error | ... |
Example
store.connect()
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Resolves with :
{
}Rejects with:
| Name | Description |
|---|---|
| Error | ... |
Example
store.disconnect()
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Resolves with :
{
}Rejects with:
| Name | Description |
|---|---|
| Error | ... |
Example
store.isConnected()
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Returns true / false
Example
store.on()
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Returns store API.
Example
store.one()
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Returns store API.
Example
store.off()
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Returns store API.
Example
store.withIdPrefix()
š Complete README: #102
| Argument | Type | Description | Required |
|---|
Returns subset of store API with _id property implicitly prefixed by passed string
Example
Events
š Complete README: #102
| Event | Description | Arguments |
|---|
Testing
Local setup
git clone https://github.com/hoodiehq/hoodie-store-client.git
cd hoodie-store-client
npm installIn Node.js
Run all tests and validate JavaScript Code Style using standard
npm testTo run only the tests
npm run test:nodeRun tests in browser
npm run test:browser:localThis will start a local server. All tests and coverage will be run at http://localhost:8080/__zuul
Contributing
Have a look at the Hoodie project's contribution guidelines. If you want to hang out you can join #hoodie-pouch on our Hoodie Community Slack.
License
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
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