2016-12-26 210 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