Go to file
virtualarchitectures 6a6b92dd9c Remove .iml file 2020-07-07 13:41:34 +01:00
.gitignore Create .gitignore 2020-07-07 13:40:27 +01:00
LICENSE Initial commit 2017-05-05 20:20:25 +02:00
README.md Update README.md 2018-12-04 15:52:13 +01:00
package.json Updated node-red-contrib-re-postgres to v 0.2.2 2020-07-07 13:39:04 +01:00
pglisten.html dependency to node-red-contrib-postgres 2018-12-04 14:00:21 +01:00
pglisten.js Handle errors parsing JSON payload, close client when ended, don't log every notification 2020-04-22 12:17:37 +02:00

README.md

node-red-contrib-postgres-listen

A Node-RED node to listen to pg_notify

Install

Run the following command in the root directory of your Node-RED install

npm install node-red-contrib-postgres-listen

Overview

This add-on, allows to listen to PostgreSQL pg_notify mechanism.

The node takes two parameters :

  • postgresdb : The PostgreSQL connection configuration
  • channel : The channel name specified in the pg_notify command

PostgreSQL sample code

  1. Create a base table:

     CREATE TABLE realtime
     (
         id INTEGER DEFAULT nextval('realtime_id_seq'::regclass) NOT NULL,
         title CHARACTER VARYING(128),
         PRIMARY KEY (id)
     );
    
  2. Create a trigger on the table:

     CREATE TRIGGER "updated_realtime_trigger"
       BEFORE INSERT OR DELETE OR UPDATE ON realtime
       FOR EACH ROW
     EXECUTE PROCEDURE notify_realtime()
    
  3. Create a trigger function:

     CREATE FUNCTION public.notify_realtime()
         RETURNS trigger
         LANGUAGE 'plpgsql'
         COST 100.0
         VOLATILE NOT LEAKPROOF 
     AS $BODY$
    
     BEGIN
         PERFORM pg_notify('addedrecord', '' || row_to_json(NEW));
         RETURN NEW;
     END;
     $BODY$;
    

Result

The node will produce a message like that :

{"name":"notification","length":47,"processId":16147,"channel":"addedrecord","payload":{"id":2,"title":"plopcsd"}}

All fields are generated by Postgres with payload being the content of the table row.

Changelog