Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Nodejs Posgresql如何监视新的数据库记录插入_Node.js_Database_Postgresql - Fatal编程技术网

Node.js Nodejs Posgresql如何监视新的数据库记录插入

Node.js Nodejs Posgresql如何监视新的数据库记录插入,node.js,database,postgresql,Node.js,Database,Postgresql,是否有可能从我的Nodejs Express服务中监视我的Postgresql数据库,并在数据库中插入新记录时启动一个函数 否:接收insert调用并运行函数。即使有人通过pgAdmin之类的方式插入记录,该函数也应该启动 否:在数据库中添加触发器。我需要发送电子邮件等,因此我希望从我的Nodejs Express服务中获得解决方案,但我仍会听取数据库触发器的想法。PostgreSQL提供了NOTIFY[1]和listen[2]命令来实现这一点。 总的来说,我们的想法是让NodeJS服务监听来自

是否有可能从我的Nodejs Express服务中监视我的Postgresql数据库,并在数据库中插入新记录时启动一个函数

否:接收insert调用并运行函数。即使有人通过pgAdmin之类的方式插入记录,该函数也应该启动

否:在数据库中添加触发器。我需要发送电子邮件等,因此我希望从我的Nodejs Express服务中获得解决方案,但我仍会听取数据库触发器的想法。

PostgreSQL提供了NOTIFY[1]和listen[2]命令来实现这一点。 总的来说,我们的想法是让NodeJS服务监听来自PostgreSQL的通知

为你找到这个:-它可能会给你一个如何在实践中做到这一点的想法

[1]


[2] 这是一个相当复杂的问题。理想情况下,您有一个供最终用户更改系统状态的API,并且您可以拦截该API中的事件,而不是在数据库层提供解决方案。这为您提供了最佳的抽象和最少的副作用-发送电子邮件是插入订单值的副作用

但是,您的问题很清楚-您希望跟踪插入

你有两个选择:拉还是推

pull版本意味着您运行一个以您的应用程序要求的任何频率运行的应用程序,并找到您感兴趣的更改。这可能需要数据库中有一个日志表,以便跟踪更改的数据。例如,如果您正在跟踪订单,您可能有一个名为“已处理的订单”的表,其中包含订单id、状态、已处理的日期,您可以沿着select*from orders行运行查询,其中订单id不在select order\U id from processed\U orders中,然后执行您需要执行的任何操作;完成后,将一行放入已处理的订单中

这有两个好处:它是可测试的,发送电子邮件的副作用可以关闭,这在您进行批量插入时非常方便,例如,在恢复备份后,您有审计跟踪,并且您可以控制性能影响。缺点是数据库操作和电子邮件发送之间存在延迟。如果有许多计划的作业执行类似的任务,您可能会注意到性能影响

我知道的推送选项是使用数据库触发器。如果你真的想,你可以写一个自定义的,尽管我建议不要在触发器的上下文中发送电子邮件-性能影响可能会很可怕

您可以使用一个框架,它根据您的配置设置通知您所做的更改。谷歌是你的朋友

最后,您可以在Postgres中使用该功能,它使用相当小的触发逻辑来通知侦听应用程序更改


这些选项的好处是几乎可以即时通知应用程序数据库的更改,并且事件流可以整齐地断开侦听器与数据库的连接。但是,您必须仔细注意性能方面,并且您可能需要能够关闭电子邮件发送,例如在执行批量数据操作时。

看看这个包@Yidna您指的是一个mysql工具,我需要有关Postgres的帮助制作一个触发器,使HTTP甚至套接字调用连接到节点服务器?