2016-12-26 174 views
1

我需要通过Node-RED实时监听PostgreSQL的变化。 我该怎么做?Node-RED实时监听PostgreSQL

我在表中的新记录上创建了触发器,并将此通知给'更改'通道。

CREATE FUNCTION notify_trigger() RETURNS trigger AS $$ 
DECLARE 
BEGIN 
    PERFORM pg_notify('changes', TG_TABLE_NAME || ',id,' || NEW.id); 
    RETURN new; 
END; 
$$ LANGUAGE plpgsql; 

CREATE TRIGGER watched_table_trigger AFTER INSERT ON users 
FOR EACH ROW EXECUTE PROCEDURE notify_trigger(); 

但我不知道如何从Node-RED收听它。请问你能帮帮我吗? 也许我可以做不同?

回答

1

我用WebSocket找到了一个很好的解决方案。请看下面的例子:

enter image description here

var pg = global.get('pg'), 
    WebSocket = global.get('ws'), 
    config = { 
     user: 'user', 
     password: 'user', 
     host: 'somehost', 
     port: 1234, 
     database: 'somedb' 
    }, 
    client = new pg.Client(config); 

client.connect(function(err) { 
    if (err) node.error(err); 

    client.on('notification', function(msg) { 
     node.send(msg); 
    }); 

    var query = client.query("LISTEN changes"); 
}); 

delete msg._session; 
return msg; 

安置自己的解决方案,我真的想知道更多的方法来解决这个问题。

2

看一看这个以前的SO问题:

MQTT Client subscribe to PostgreSQL DB Changes

它看起来像Postgress支持其可用于发送MQTT消息,其节点RED可以很容易地租用者用于基于Python的触发器。

+0

嗯..我会尝试它作为替代。谢谢。我为自己找到了一个好的解决方案。我会尽快添加我的解决方案 – GatoPresto