0
我想在PostgreSQL中設置一個簡單的LISTEN/NOTIFY
功能並使用pg-promise庫通知node.js代碼。Postgres LISTEN/NOTIFY與pg-promise
我已經腳手架的PG代碼
CREATE OR REPLACE FUNCTION notify_trigger() RETURNS trigger AS $$
DECLARE
BEGIN
RAISE NOTICE '%', 'HI';
PERFORM pg_notify('watchers', TG_TABLE_NAME || ', tags:,' || NEW.tags);
RETURN new;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER watched_table_trigger BEFORE INSERT OR UPDATE ON assets
FOR EACH ROW EXECUTE PROCEDURE notify_trigger();
它的psql控制檯上的通知。
但是,當我使用pg-promise代碼時,它不輸出控制檯消息,因爲我希望。相關的Node.js代碼:
const pgoptions = require('./pgoptions.config.js');
const connectObject = require('./pgconnect.config.js');
const db = require('pg-promise')(pgoptions)(connectObject);
// added listener code for pg listen/notify
db.connect({direct: true})
.then(function (sco) {
sco.client.on('assets', function (data) {
console.log('Received: ', data);
});
return sco.none('LISTEN assets');
})
.catch(function (error) {
console.error('Error:', error);
});
module.exports = resources;
的代碼的NodeJS直出pg-promise的Learn By Example文檔here的。我沒有回顧關於此主題的其他帖子,但沒有找到基於pg-promise的解決方案。
我做了這個改變,仍然沒有收到通知。還有什麼我應該找的? –
@PiyushMehta看起來你正在通過'watchers'頻道進行募捐,而在頻道'assets'上發佈'LISTEN'來代替。 –
謝謝,這是做到了。 –