sails-postgresql-live-select v0.1.3
sails-postgresql-live-select 
A Sails connection adapter to use the pg-live-select NPM Package in order to provide live (real time) result sets for models.
Example
See the chat room example application for a full working demonstration of this package.
Installation
To be used alongside the sails-postgresql connection adapter.
Install the package:
npm install --save sails-postgresql-live-selectAdd the connection settings to your
config/connections.js:livePg: { adapter: 'sails-postgresql-live-select', // Connection details must be passed as url, not individually url: 'postgres://sails:sails@localhost:5432/sails_test', // Unique channel required for asynchronous notifications channel: 'sails_test' }Add the adapter to be used on your models, for example in
config/models.js:connection: [ 'postgresql', 'livePg' ],
Usage
YourModel.liveFind(options, condition)
This adapter adds a liveFind method to your models.
| Argument | Type | Description |
|---|---|---|
options | Object | Find options as defined by Waterline Query Language |
condition | Function | Optional function for validating if result set should be refreshed on row change. See condition function documentation for pg-live-select |
The liveFind method returns a SelectHandle object as defined by pg-live-select.
For example, listen for the update event in your controller actions to send changes to the client:
var myLiveSelect = MyModel.liveFind({},
function(row) {
// Optional data invalidation callback
// Check if data is invalidated by this row change
console.log('Row data', row);
return true;
}
).on('update',
function(diff, data) {
// Results have changed, send to client
sails.sockets.emit(req.socket.id, 'chatDiff', diff);
}
);When done listening for updates to a query, be sure to call the stop() method on the returned SelectHandle object to prevent memory leaks.
Running Tests
# Configure PostgreSQL server settings
vim test/config/connections.js
# Run suite
npm testTest execution code is in test/config/bootstrap.js.
License
MIT