Created
February 11, 2017 19:37
-
-
Save jefbarn/47e8d658059df9def7e235e8f4ea8725 to your computer and use it in GitHub Desktop.
Using Pouchdb _selector plug-in
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import PouchDB from 'pouchdb-browser' // Or however you are importing PouchDB using your module system | |
PouchDB.plugin((PouchDB) => { // Add the 'plug-in' to the Pouchdb instance | |
let pouchReplicate = PouchDB.replicate | |
PouchDB.replicate = (source, target, repOptions) => { | |
let sourceAjax = source._ajax | |
source._ajax = (ajaxOps, callback) => { | |
if (ajaxOps.url.includes('_selector')) { | |
ajaxOps.url = ajaxOps.url.replace('filter=_selector%2F_selector', 'filter=_selector') | |
ajaxOps.method = 'POST' | |
ajaxOps.body = { | |
selector: repOptions.selector | |
} | |
} | |
return sourceAjax(ajaxOps, callback) | |
} | |
return pouchReplicate(source, target, repOptions) | |
} | |
}) | |
let remotedb = new PouchDB('http://my.couchd.db:5984/database') | |
// put some docs in the remote db | |
remotedb.bulkDocs([ | |
{kind: 'apple'}, | |
{kind: 'orange'}, | |
{kind: 'pear'} | |
]) | |
let localdb = new PouchDB('mydb') | |
PouchDB.replicate(remotedb, localdb, { | |
filter: '_selector', | |
selector: { | |
kind: { | |
$in: [ | |
'apple', | |
'pear', | |
] | |
} | |
} | |
}) | |
// Now localdb only has 'apple' and 'pear' documents |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment