livelystream
Stream changes to and from a lively dataase as a node.js stream.
Installation
This module is installed via npm:
$ npm install livelystream
Example Usage
LivelyStream when used in conjunction with ObserveStream will replicate data from the database pointed to LivelyStream with the local javascript object pointed to by ObserveStream:
// a database to replicate to/fromvar memdb = ;// bind the database to the lively streamvar ls = memdb;// scope will contain the local javascript versions of the data in the databasevar scope = {};// Watch for any changes on scope.target and replicate to the 'eugene' key in// the remote databasevar os = 'eugene' scope 'target' {};// Connect the database to the observestream to do two-way replicationls;// Making any changes to the database, should eventually replicate// the changes to scope.targetmemdb;// Making any changes to the local scope.target will replicate to he databasescopetargetname = 'Susan';
API
LivelyStream(db)
Constructs a new LivelyStream instance bound to a Lively database.
db
- the Lively database to synchronize to. (eg. MemLively
Outbound 'data' Events emitted by LivelyStream
The LivelyStream emits 'data' events with the following format:
value
events
Initial The very first event that the LivelyStream fires will be the value
event.
This will contain the inital value of the key
in the database, or if the
key is not found in the database, then the initialValue
will be returned.
For example, if the initial value in the database is my value
then the
first event emitted would be:
'value' 'my value'
change
events
Any time there is a change in the database, a change
event is emitted.
The change is in changeset object
diff format. For example:
'change'type: 'put' key: 'name' value: 'Eugene'type: 'put' key: 'number' value: 42type: 'del' key: 'old'
Inbound events consumed by LivelyStream to change database values
listen
event
The very first event that should be received to synchronization should be a
listen
event, which contains a key
and an initialValue
.
A sample message is:
'listen' key: 'my key' initialValue: {}
key
- The key to bind to the remote database for watching.initialValue
- If there is nothing in the database at thekey
then use this as the initial value.
change
events
When piped from a stream such as
ObserveStream, the inbound
stream can write events that can modify the underlying database values pointed
to by the key
.
The format of these events is the same as the change
event listed above.
Eg:
'change'type: 'put' key: 'name' value: 'Eugene'type: 'put' key: 'number' value: 42type: 'del' key: 'old'