Node-RED实时监听PostgreSQL

时间:2016-12-26 12:52:56

标签: node.js postgresql node-red real-time-data

我需要使用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听它。请问你能帮帮我吗? 也许我能以不同的方式做到这一点?

2 个答案:

答案 0 :(得分:2)

看一下之前的SO问题:

MQTT Client subscribe to PostgreSQL DB Changes

看起来Postgress支持基于Python的触发器,可用于发送Node-RED可以轻松订阅的MQTT消息。

答案 1 :(得分: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;

发布您的解决方案,我真的想知道更多解决方法。