mysql - 使用 Node 创建新的 MySQL 行时执行操作
问题描述
我正在节点中制作一个 Slack 机器人。我有一个带有 MySQL 数据库的网站,每当有人发表新帖子时,都会在数据库中添加一个新行。我想在创建新帖子时在 Slack 中发送消息,但我不知道如何在添加新行时触发一些代码。
我正在使用 Node、MySQL 插件和 Slack API,但最后一部分应该无关紧要。
我只需要一个可以在特定表中有新行时触发其他代码的代码片段。
提前致谢!
解决方案
最简单的解决方案是通过跟踪 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/通知客户端。
推荐阅读
- javascript - Electron JS - 获取所选目录的路径
- c# - 如何在 DataTable 列中设置默认值
- android - 将多个firebase项目添加到一个flutter(android部分)项目中
- node.js - 我想在 Ubuntu 20.04 上安装和运行 react-create-app
- amazon-web-services - 使用 2 个 vpc ecr dkr 端点启用私有 dns 名称会导致错误
- sql - SQL Group by sum() 并在非规范化数据中首先选择
- prolog - prolog v5.2中带有重复符号的单词
- c# - 使用带有接口类型参数的库集合(HashSet)中的覆盖函数(GetHashCode)
- reactjs - 在功能性 React 组件中使用样式化组件
- node.js - Mongodb Transactions Unhandled Promise Rejection Error - MongoError: Retryable write with is disabled on session