首页 > 解决方案 > 使用 Node 创建新的 MySQL 行时执行操作

问题描述

我正在节点中制作一个 Slack 机器人。我有一个带有 MySQL 数据库的网站,每当有人发表新帖子时,都会在数据库中添加一个新行。我想在创建新帖子时在 Slack 中发送消息,但我不知道如何在添加新行时触发一些代码。

我正在使用 Node、MySQL 插件和 Slack API,但最后一部分应该无关紧要。

我只需要一个可以在特定表中有新行时触发其他代码的代码片段。

提前致谢!

标签: mysqlnode.jsslack

解决方案


最简单的解决方案是通过跟踪 MYSQL BIN 日志来跟踪事件 https://www.npmjs.com/package/mysql-events

这个 npm 包可以跟踪插入、更新和删除事件。

或者,您可以为各种事件设置 MYSQL 触发器(在您的情况下为 INSERT)。但是 MYSQL 触发器有一个限制,您不能触发 NodeJs 代码,但它只能运行 SQL 存储过程或查询。您可以为每个插入的行创建一个 postEventLog 表并在其上插入触发器后进行设置。

https://www.mysqltutorial.org/mysql-triggers/mysql-after-insert-trigger/

然后,您可以按指定的时间间隔继续检查表中的新更改。

以防万一,您不想要额外的桌子。继续轮询 post 表中的新更改,如果发现新记录,则执行您的自定义逻辑以调用 slack API/通知客户端。


推荐阅读