我如何使用带有 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 包。
我是 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 包。