Remote Stream for PouchDB
Switch branches/tags
Clone or download
Pull request Compare This branch is even with yldio:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib increasing code coverage Oct 6, 2015
tests _info May 31, 2016
.eslintignore eslint Oct 6, 2015
.eslintrc eslintrc Oct 5, 2015
.gitignore eslint Oct 6, 2015
.travis.yml travis debugging Oct 25, 2015
README.md pouchdb v5 Nov 12, 2015
adapter.js _info May 31, 2016
index.js eslint Oct 6, 2015
methods.js eslint Oct 6, 2015
package.json v0.3.0 May 31, 2016
remote.js pouchdb v5 Nov 12, 2015
streams.js pouchdb v5 Nov 12, 2015

README.md

pouch-remote-stream

By Build Status

Consume a remote PouchDB stream.

Goes well with pouch-stream-server on the server side.

PouchDB versions

Tested against PouchDB version 5.

Install

$ npm install pouch-remote-stream --save

Getting started

1. Require it

var Remote = require('pouch-remote-stream');

2. Add the PouchDB adapter

PouchDB.adapter('remote', Remote.adapter);

3. Create the remote

var remote = Remote();

4. Create the remote PouchDB database

var remoteDB = new PouchDB('mydb', {
  adapter: 'remote',
  remote: remote 
});

5. Pipe it to and from a duplex stream

var stream = somehowCreateSomeDuplexStream();

stream.pipe(remote.stream()).pipe(stream);

6. Use the PouchDB remote DB

, for example to sync a local DB:

var localDB = new PouchDB('someLocalDB');
localDB.sync(remoteDB);

Any stream, really

You can pipe it to and from any duplex object stream.

Encode and decode streams

If you need to work with a raw duplex stream (like a TCP or a web socket), you will need to encode and decode the stream. For example, you can use a new-line separated JSON duplex stream like this:

var JSONDuplexStream = require('json-duplex-stream');

var JSONStream = JSONDuplexStream();

var rawDuplexStream = createRawStreamSomehow();

// raw => JSON.in => remote.stream => JSON.out => raw

rawDuplexStream.
  pipe(JSONStream.in).
  pipe(remote.stream).
  pipe(JSONStream.out).
  pipe(rawDuplexStream);

You can use with reconnect:

Here's an example of using a TCP stream and reconnecting if the connection goes down:

var Remote = require('pouch-remote-stream');
PouchDB.adapter('remote', Remote.adapter);
var Reconnect = require('reconnect-core');

var reconnect = Reconnect(function(options) {
  return net.connect(options.port, options.host);
});

var options = {
  port: 80,
  host: '127.0.0.1'
};

var re = reconnect(options, function(stream) {
  var remote = Remote();

  var remoteDB = new PouchDB('mydb', {
    adapter: 'remote',
    remote: remote 
  });

  stream.pipe(remote.stream).pipe(stream);

  // use remoteDB

});

License

ISC