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你的解决方案,我真的很想知道更多解决这个问题的方法。
我需要使用 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你的解决方案,我真的很想知道更多解决这个问题的方法。