据我所知,在 Node 中读取数据库触发器没有任何简单的方法,因此一个常见的解决方案是使用 Redis 作为发布系统,并使用连接器模块执行实际的数据库查询。一个非常流行的用于 Node 的 MySQL 连接器就是这个,所以我将使用它作为示例。
使用模块时,您正在寻找的“MySQL 触发器”只是您可以在大多数异步模块中找到的简单回调。node-mysql以下是使用模块查询的示例:
var post = {id: 1, title: 'Hello MySQL'};
connection.query('INSERT INTO posts SET ?', post, function(err, result) {
//the database transaction has completed, notify the client
});
当回调被调用时,这意味着数据库操作要么完成,要么失败(检查err回调中的属性以检查这一点)。然后,您可以使用EventSource/Server-Sent Events或WebSockets将此更改发送到浏览器。
作为对第三个问题的一个侧面回答,将数据从服务器推送到客户端总是比客户端持续请求数据更有效,因为当客户端请求数据时,服务器不能保证有需要的数据。