nodejs如何去监听数据库里面有新的数据插入?
如题,nodejs如何去监听mysql数据库的指定的某一张表里面有新的数据插入?
8 回复
首先,数据库的数据插入从另一个程序中是无法监听的。 如果用笨方法的话就是循环查询,如果本次查询结果与前一次不一样,那就是有变化。 还有可以打开mysql的bin log 日志记录,然后让nodejs去监控bin log日志文件的变化,这样也能发现数据插入。 其它的可行方案暂时没想到,欢迎指点
特定的数据库有办法,比如Oracle可以利用 DCN 机制(Data Change Notification),不过这个跟 Nodejs 没啥关系。。
@Gitforxuyang 貌似只能这样了,谢谢~
@myy 我用的是mysql~
@hcyhehe 想到其它好办法记得@我啊。 我也学习学习
这个是数据库的功能问题,实现也看数据库提供了什么样的能力。 MySQL 上,我目前能想到的方案是:
- 在指定表上,建一个 trigger 。
- trigger 中调用 stored procedure 。
- stored procedure 中就可以用 UDF 了, UDF 可以外部访问,完成“通知”功能: https://dev.mysql.com/doc/refman/5.7/en/adding-udf.html 。
当然,不是 MySQL 功能这么弱的关系数据库这个功能多半都有现成方案,不用这么折腾了。
如果你是调用统一的接口修改数据库的话,那可以加一层封装,在调用修改数据库的接口之后,通知外部数据库有了修改
在插入的方法加emit不就好了
来自酷炫的 CNodeMD