我如何使用带有 mysql 的 nodejs 知道 mysql 上的更新事件?

How can I know an update event on mysql using nodejs with mysql?

我是 Nodejs 的新手,我想在 MySQL 发生更新时向客户端发送数据。所以我找到了 ORM,Sequelize。

我可以使用 Sequelize 从 MySQL 知道更新事件吗?或者我怎么知道 MySQL 上使用 Nodejs 和 MySQL 的更新事件?

对于MySQL,最简单的解决方案是设置一些东西到'tail' MySQL 二进制日志,例如zongji.

另一个较少 ideal/trivial 的解决方案是在您的数据库中设置触发器,调用以某种方式与您的进程通信的自定义数据库插件。

在 MySql 的情况下,触发器是最佳选择。

MySQL 触发器: 触发器或数据库触发器是自动执行以响应特定事件的存储程序,例如插入、更新或删除发生在 table.

例如:- 您可以进行审核 table 以保存有关数据库更新或插入的信息。

审计 table 样本 员工 table CREATE TABLE employees_audit ( id INT AUTO_INCREMENT PRIMARY KEY, employeeNumber INT NOT NULL, lastname VARCHAR(50) NOT NULL, changedat DATETIME DEFAULT NULL, action VARCHAR(50) DEFAULT NULL );

为员工定义触发器 table DELIMITER $$ CREATE TRIGGER before_employee_update BEFORE UPDATE ON employees FOR EACH ROW BEGIN INSERT INTO employees_audit SET action = 'update', employeeNumber = OLD.employeeNumber, lastname = OLD.lastname, changedat = NOW(); END$$ DELIMITER ;

然后,要查看当前数据库中的所有触发器,请使用 SHOW TRIGGERS 语句,如下所示: SHOW TRIGGERS;

在你的后端,你可以有一个轮询机制(基于间隔的数据库检查)来审计table更新并相应地通知客户端。 这可以通过一个简单的查询来完成,以检查 employees_audit 更新,方法是检查行数或基于创建的日期时间。

如果您不需要这个额外的 table,您可以使用相同的轮询逻辑来检查 employees table 本身的更新update_at 归档日期时间。

您可以使用 https://www.npmjs.com/package/mysql-events 监视 MySQL 数据库并对匹配事件运行回调的 Node JS NPM 包。