Awesome
pouch-remote-stream
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