1.0.7 • Published 4 years ago

redux-pouchdb-middleware v1.0.7

Weekly downloads
5
License
MIT
Repository
github
Last release
4 years ago

redux-pouchdb-middleware

Version Build Twitter Follow

A redux middleware to sync data between redux with pouchdb and vice-versa.

Inspired and forked from pouch-redux-middleware

How it works?

  • This package is a middleware for Redux.
  • It persists the state of chosen reducer of the Redux into PouchDB every time store get updated.
  • It reducers will be passed the state from PouchDB on application loads.
  • This is a one way data sync (for now). That means, it only persists the data from reducers to PouchDB. Only on app loads, it fetch the data from PouchDB to reducers.

Installation

$ yarn add redux-pouchdb-middleware

or,
$ npm install redux-pouchdb-middleware

Peer Dependencies

Usage

An example React-redux store configuration.

import {
    applyMiddleware,
    compose,
    createStore,
}                                 from "redux"
import { ReduxPouchDBMiddleware } from "redux-pouchdb-middleware"
import PouchDB                    from "pouchdb"
import reducers                   from "./reducers"
import { initialLoad }            from "./reducers/actions"

const initialStore = {}
const middleware = []
const enhancers = []

middleware.push(ReduxPouchDBMiddleware({
    reducer: "todos",
    verbose: false,
    db: new PouchDB("todos-store", { adapter }),
    actions: {
        initialInsert: todos => initialLoad(todos),
    },
    excludeKeys: ["id"]
}))

const composedEnhancers = compose(applyMiddleware(...middleware), ...enhancers)

export default createStore(reducers, initialStore, composedEnhancers)

API

ReduxPouchDBMiddleware(options)

  • options: array|object. An array of objects or simply object with specs as specified below.

Options

  • reducer: string|required. Name of the reducer to store data. Its a json data key for store's root reducer.
  • db: required. an instance of PouchDB Database.
  • verbose: boolean|optional(default = false). Weather to print logs in console or not.
  • actions: an object describing the actions to perform when initially inserting items and when a change occurs in the db.
  • actions.initialInsert: redux action to store data from pouchDB to store on app load.
  • actions.includeKeys: string[]|optional. An array of string of keys to include to save in pouchdb for this specific redux reducers. If not provided, all keys will be saved except provided in excludeKeys key.
  • actions.excludeKeys: string[]|optional. An array of string of keys to exclude saving in pouchdb for this specific redux reducers.

License

MIT

1.0.7

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago