PostgreSQL Live Select for Sails.js
npm install sails-postgresql-live-selectA Sails connection adapter to use the pg-live-select NPM Package in order to provide live (real time) result sets for models.
See the chat room example application for a full working demonstration of this package.
To be used alongside the sails-postgresql connection adapter.
1. Install the package:
``bash`
npm install --save sails-postgresql-live-select
2. Add the connection settings to your config/connections.js:
`javascript`
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'
}
3. Add the adapter to be used on your models, for example in config/models.js:
`javascript`
connection: [ 'postgresql', 'livePg' ],
This adapter adds a liveFind method to your models.
Argument | Type | Description
----------|------|-----------
options | Object | Find options as defined by Waterline Query Languagecondition | 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:
`javascript`
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.
`bash`Configure PostgreSQL server settings
vim test/config/connections.jsRun suite
npm test
Test execution code is in test/config/bootstrap.js`.
MIT