0.1.3 • Published 9 years ago

sails-postgresql-live-select v0.1.3

Weekly downloads
3
License
MIT
Repository
github
Last release
9 years ago

sails-postgresql-live-select Build Status

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.

  1. Install the package:

    npm install --save sails-postgresql-live-select
  2. 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'
    }
  3. 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.

ArgumentTypeDescription
optionsObjectFind options as defined by Waterline Query Language
conditionFunctionOptional 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