Node-RED 实时监听 PostgreSQL

Node-RED listen PostgreSQL in real-time

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

我在 table 中的新记录上创建了触发器并将其通知到 'changes' 频道。

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 收听它。请问你能帮帮我吗? 也许我可以换个方式?

看看之前的 SO 问题:

MQTT Client subscribe to PostgreSQL DB Changes

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

我用 WebSocket 找到了适合自己的解决方案。看下面的例子:

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;

Post你的解决方案,我真的很想知道更多解决这个问题的方法。