sails-postgresql-live-select
v0.1.3
Published
PostgreSQL Live Select for Sails.js
Downloads
10
Readme
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-select
Add 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 test
Test execution code is in test/config/bootstrap.js
.
License
MIT