有什么方法可以使用 LISTEN & NOTIFY(或 NodeJS)实时监控 Postgresql 查询更改?

Bea*_*ian 6 sql database postgresql performance node.js

所以我有一个自定义的 Postgresql 查询,它检索指定经度纬度半径内的所有行,如下所示:

SELECT *, 
earth_distance(ll_to_earth($1,$2), ll_to_earth(lat, lng)) as distance_metres
FROM RoomsWithUsers
WHERE earth_box(ll_to_earth($1,$2), $3) @> ll_to_earth(lat, lng)
ORDER by distance_metres;
Run Code Online (Sandbox Code Playgroud)

在我的节点服务器中,我希望每次查询中的行数发生变化时都能收到通知。我已经研究过使用诸如pg-live-query 之类的 Node 库,但我更愿意使用 pg-pubsub 与现有的 Postgres LISTEN/NOTIFY 一起使用,以避免不必要的开销。但是,据我所知,PostgreSQLTRIGGERs仅适用于 UPDATE/INSERT/DELETE 操作,而不适用于任何特定查询本身。有什么方法可以完成我正在做的事情吗?

del*_*fer 2

异步&聆听/通知是正确的方法!

您可以在 UPDATE/INSERT 上添加触发器并在触发器正文中执行查询,将行数保存在简单表中,如果值更改则调用 NOTIFY。如果您在查询中需要多个参数组合,您可以从程序内部创建/销毁触发器。